{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. 请简述基于内容的推荐和基于协同过滤的推荐的基本原理，并指出二者的适用场景。（20分） \n",
    "2. 请分别给出一个基于用户的协同过滤和基于物品的协同过滤的典型应用场景。（20分） \n",
    "3. 将推荐电影数目改成20个，比较三种协同过滤算法的性能，并和推荐数目为10的推荐结果比较。（60分） "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.基于内容的推荐：\n",
    "   根据用户喜欢的物品来进行相应的推荐，而不需要考虑其他用户的行为。大致流程如下：计算用户图像和物品图像后，进行相应匹配程度的计算，后对结果根据匹配程度进行的排序后对用户进行推荐物品。其的可解释性较好。\n",
    "基于协同过滤的推荐：\n",
    "   协同过滤算法一般分为：\n",
    "• 基于用户的协同过滤\n",
    "• 基于物品的协同过滤\n",
    "• 基于矩阵分解的协同过滤\n",
    "基于用户的协同过滤是根据相似用户对目标物品的打分，预测用户对该物品的打分；即用户选择某个物品是基于其他用户的推荐，给用户推荐与其有相似兴趣的其他用户喜欢的物品；首先进行用户相似度的度量，再使用预测函数进行打分预测；\n",
    "基于物品的协同过滤是根据该用户对相似物品的打分，预测该用户对目标物品的打分；即根据用户对物品的相应打分来推荐可能获得赞同的物品。其中，物品相似度可用两个向量夹角余弦表示；之后，再进行相似度加权，使用相应的预测函数进行打分预测；\n",
    "基于矩阵分解的协同过滤的基本思想对评分矩阵R进行分解/降维（亦被称为隐因子分解LFM）；对于用户-商品矩阵(评分矩阵)，记为Rm×nRm×n。可以将其分解成两个或者多个矩阵的乘积，假设分解成两个矩阵Pm×kPm×k和Qk×nQk×n，我们要使得矩阵Pm×kPm×k和Qk×nQk×n的乘积能够拟合已知评分：Rm×n≈Pm×k×Qk×n=R^m×n，其中，矩阵Pm×k表示的是m个用户与k个主题之间的关系，而矩阵Qk×n表示的是k个主题与n个商品之间的关系。其需要提前离线训练模型，但在线预测时训练迅速。可采用梯度下降来进行计算（增加正则项，增加偏置项，加入隐式反馈数据），也可以采用坐标轴下降法（jiao'ti交替最小二乘法）求解\n",
    "适用场景：\n",
    "如豆瓣上的文艺作品，用户对其的偏好程度与用户自身的品位关联性较强；或者消息更新较快，如新闻媒体软件，适合UserCF\n",
    "而对于电子商务网站来说，商品之间的内在联系对用户的购买行为影响更为显著，或拥有大数量级的网站，适合ItemCF\n",
    "\n",
    "2.基于用户：豆瓣推荐\n",
    "基于物品：人民日报"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#以下为数据探索\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import datetime\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>rating</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>196</td>\n",
       "      <td>242</td>\n",
       "      <td>3</td>\n",
       "      <td>881250949</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>186</td>\n",
       "      <td>302</td>\n",
       "      <td>3</td>\n",
       "      <td>891717742</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>22</td>\n",
       "      <td>377</td>\n",
       "      <td>1</td>\n",
       "      <td>878887116</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>244</td>\n",
       "      <td>51</td>\n",
       "      <td>2</td>\n",
       "      <td>880606923</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>166</td>\n",
       "      <td>346</td>\n",
       "      <td>1</td>\n",
       "      <td>886397596</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  item_id  rating  timestamp\n",
       "0      196      242       3  881250949\n",
       "1      186      302       3  891717742\n",
       "2       22      377       1  878887116\n",
       "3      244       51       2  880606923\n",
       "4      166      346       1  886397596"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "triplet_cols = ['user_id','item_id', 'rating', 'timestamp'] \n",
    "file_path=open(r'C:\\Users\\dell\\Downloads\\电影推荐案例\\3代码类素材\\ml-100k\\ml-100k\\data\\u.data')\n",
    "#dpath = 'C:/Users/dell/Downloads/电影推荐案例/3代码类素材/ml-100k/ml-100k/data'\n",
    "df_triplet = pd.read_csv(file_path, sep='\\t', names=triplet_cols, encoding='latin-1')\n",
    "df_triplet.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 100000 entries, 0 to 99999\n",
      "Data columns (total 4 columns):\n",
      "user_id      100000 non-null int64\n",
      "item_id      100000 non-null int64\n",
      "rating       100000 non-null int64\n",
      "timestamp    100000 non-null int64\n",
      "dtypes: int64(4)\n",
      "memory usage: 3.1 MB\n"
     ]
    }
   ],
   "source": [
    "df_triplet.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>rating</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>196</td>\n",
       "      <td>242</td>\n",
       "      <td>3</td>\n",
       "      <td>1997-12-04 23:55:49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>186</td>\n",
       "      <td>302</td>\n",
       "      <td>3</td>\n",
       "      <td>1998-04-05 03:22:22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>22</td>\n",
       "      <td>377</td>\n",
       "      <td>1</td>\n",
       "      <td>1997-11-07 15:18:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>244</td>\n",
       "      <td>51</td>\n",
       "      <td>2</td>\n",
       "      <td>1997-11-27 13:02:03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>166</td>\n",
       "      <td>346</td>\n",
       "      <td>1</td>\n",
       "      <td>1998-02-02 13:33:16</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  item_id  rating           timestamp\n",
       "0      196      242       3 1997-12-04 23:55:49\n",
       "1      186      302       3 1998-04-05 03:22:22\n",
       "2       22      377       1 1997-11-07 15:18:36\n",
       "3      244       51       2 1997-11-27 13:02:03\n",
       "4      166      346       1 1998-02-02 13:33:16"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_triplet['timestamp'].astype('float64')\n",
    "df_triplet['timestamp']=df_triplet['timestamp'].map(datetime.datetime.fromtimestamp) # 时间格式转换,map() 会根据提供的函数对指定序列做映射\n",
    "df_triplet.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of users = 943\n",
      "Number of movies = 1682\n"
     ]
    }
   ],
   "source": [
    "n_users = df_triplet['user_id'].unique().shape[0]#唯一筛选后查看长度\n",
    "n_items = df_triplet['item_id'].unique().shape[0]\n",
    "print ('Number of users = ' + str(n_users) + '\\n'+ 'Number of movies = ' + str(n_items) )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "405    737\n",
       "655    685\n",
       "13     636\n",
       "450    540\n",
       "276    518\n",
       "Name: user_id, dtype: int64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 统计用户评分次数，=可看出哪些用户活跃，默认是降序排列\n",
    "user_freq = df_triplet['user_id'].value_counts() \n",
    "user_freq.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bcd30445f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#绘制评分人数柱状图\n",
    "plt.bar(user_freq.index, user_freq)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_id</th>\n",
       "      <th>rating_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>50</td>\n",
       "      <td>583</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>258</th>\n",
       "      <td>258</td>\n",
       "      <td>509</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>100</th>\n",
       "      <td>100</td>\n",
       "      <td>508</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>181</th>\n",
       "      <td>181</td>\n",
       "      <td>507</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>294</th>\n",
       "      <td>294</td>\n",
       "      <td>485</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     item_id  rating_times\n",
       "50        50           583\n",
       "258      258           509\n",
       "100      100           508\n",
       "181      181           507\n",
       "294      294           485"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 统计每部电影的评分人数，可看出电影的流行程度，默认是降序排列\n",
    "items_rating_times = df_triplet['item_id'].value_counts() \n",
    "#item_freq.head()\n",
    "\n",
    "df_items_sorted_by_rating_times = pd.DataFrame({'item_id':items_rating_times.index, 'rating_times':items_rating_times})\n",
    "df_items_sorted_by_rating_times.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bcd21bf080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#按索引排列绘制柱状图\n",
    "plt.bar(items_rating_times.index, items_rating_times)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bcd3778908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#按评分次数排列\n",
    "items_rating_times1 = items_rating_times.copy()\n",
    "items_rating_times1.index = range(items_rating_times1.count()) # 对索引重新赋值，方便画图\n",
    "fig, ax = plt.subplots(1, 1)#创建画布窗口，跟matlab相似\n",
    "items_rating_times1.plot(ax=ax, title='Rating Times');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_id</th>\n",
       "      <th>title</th>\n",
       "      <th>release_date</th>\n",
       "      <th>video_release_date</th>\n",
       "      <th>imdb_url</th>\n",
       "      <th>unknown</th>\n",
       "      <th>Action</th>\n",
       "      <th>Adventure</th>\n",
       "      <th>Animation</th>\n",
       "      <th>Children's</th>\n",
       "      <th>...</th>\n",
       "      <th>Fantasy</th>\n",
       "      <th>Film-Noir</th>\n",
       "      <th>Horror</th>\n",
       "      <th>Musical</th>\n",
       "      <th>Mystery</th>\n",
       "      <th>Romance</th>\n",
       "      <th>Sci-Fi</th>\n",
       "      <th>Thriller</th>\n",
       "      <th>War</th>\n",
       "      <th>Western</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>Toy Story (1995)</td>\n",
       "      <td>01-Jan-1995</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Toy%20Story%2...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>GoldenEye (1995)</td>\n",
       "      <td>01-Jan-1995</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?GoldenEye%20(...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>Four Rooms (1995)</td>\n",
       "      <td>01-Jan-1995</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Four%20Rooms%...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>Get Shorty (1995)</td>\n",
       "      <td>01-Jan-1995</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Get%20Shorty%...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>Copycat (1995)</td>\n",
       "      <td>01-Jan-1995</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Copycat%20(1995)</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 24 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   item_id              title release_date  video_release_date  \\\n",
       "0        1   Toy Story (1995)  01-Jan-1995                 NaN   \n",
       "1        2   GoldenEye (1995)  01-Jan-1995                 NaN   \n",
       "2        3  Four Rooms (1995)  01-Jan-1995                 NaN   \n",
       "3        4  Get Shorty (1995)  01-Jan-1995                 NaN   \n",
       "4        5     Copycat (1995)  01-Jan-1995                 NaN   \n",
       "\n",
       "                                            imdb_url  unknown  Action  \\\n",
       "0  http://us.imdb.com/M/title-exact?Toy%20Story%2...        0       0   \n",
       "1  http://us.imdb.com/M/title-exact?GoldenEye%20(...        0       1   \n",
       "2  http://us.imdb.com/M/title-exact?Four%20Rooms%...        0       0   \n",
       "3  http://us.imdb.com/M/title-exact?Get%20Shorty%...        0       1   \n",
       "4  http://us.imdb.com/M/title-exact?Copycat%20(1995)        0       0   \n",
       "\n",
       "   Adventure  Animation  Children's   ...     Fantasy  Film-Noir  Horror  \\\n",
       "0          0          1           1   ...           0          0       0   \n",
       "1          1          0           0   ...           0          0       0   \n",
       "2          0          0           0   ...           0          0       0   \n",
       "3          0          0           0   ...           0          0       0   \n",
       "4          0          0           0   ...           0          0       0   \n",
       "\n",
       "   Musical  Mystery  Romance  Sci-Fi  Thriller  War  Western  \n",
       "0        0        0        0       0         0    0        0  \n",
       "1        0        0        0       0         1    0        0  \n",
       "2        0        0        0       0         1    0        0  \n",
       "3        0        0        0       0         0    0        0  \n",
       "4        0        0        0       0         1    0        0  \n",
       "\n",
       "[5 rows x 24 columns]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#查看最流行的是什么电影，读取数据\n",
    "item_cols = ['item_id', 'title', 'release_date', 'video_release_date', 'imdb_url', 'unknown', 'Action', 'Adventure',\n",
    " 'Animation', 'Children\\'s', 'Comedy', 'Crime', 'Documentary', 'Drama', 'Fantasy',\n",
    " 'Film-Noir', 'Horror', 'Musical', 'Mystery', 'Romance', 'Sci-Fi', 'Thriller', 'War', 'Western'] \n",
    "\n",
    "file_path1=open(r'C:\\Users\\dell\\Downloads\\电影推荐案例\\3代码类素材\\ml-100k\\ml-100k\\data\\u.item',encoding='latin-1')\n",
    "df_items = pd.read_csv(file_path1, sep='|', names=item_cols) \n",
    "df_items.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_id</th>\n",
       "      <th>rating_times</th>\n",
       "      <th>title</th>\n",
       "      <th>release_date</th>\n",
       "      <th>video_release_date</th>\n",
       "      <th>imdb_url</th>\n",
       "      <th>unknown</th>\n",
       "      <th>Action</th>\n",
       "      <th>Adventure</th>\n",
       "      <th>Animation</th>\n",
       "      <th>...</th>\n",
       "      <th>Film-Noir</th>\n",
       "      <th>Horror</th>\n",
       "      <th>Musical</th>\n",
       "      <th>Mystery</th>\n",
       "      <th>Romance</th>\n",
       "      <th>Sci-Fi</th>\n",
       "      <th>Thriller</th>\n",
       "      <th>War</th>\n",
       "      <th>Western</th>\n",
       "      <th>ranking_rating_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>50</td>\n",
       "      <td>583</td>\n",
       "      <td>Star Wars (1977)</td>\n",
       "      <td>01-Jan-1977</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Star%20Wars%2...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>258</td>\n",
       "      <td>509</td>\n",
       "      <td>Contact (1997)</td>\n",
       "      <td>11-Jul-1997</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/Title?Contact+(1997/I)</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>100</td>\n",
       "      <td>508</td>\n",
       "      <td>Fargo (1996)</td>\n",
       "      <td>14-Feb-1997</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Fargo%20(1996)</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>181</td>\n",
       "      <td>507</td>\n",
       "      <td>Return of the Jedi (1983)</td>\n",
       "      <td>14-Mar-1997</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Return%20of%2...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>294</td>\n",
       "      <td>485</td>\n",
       "      <td>Liar Liar (1997)</td>\n",
       "      <td>21-Mar-1997</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/Title?Liar+Liar+(1997)</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   item_id  rating_times                      title release_date  \\\n",
       "0       50           583           Star Wars (1977)  01-Jan-1977   \n",
       "1      258           509             Contact (1997)  11-Jul-1997   \n",
       "2      100           508               Fargo (1996)  14-Feb-1997   \n",
       "3      181           507  Return of the Jedi (1983)  14-Mar-1997   \n",
       "4      294           485           Liar Liar (1997)  21-Mar-1997   \n",
       "\n",
       "   video_release_date                                           imdb_url  \\\n",
       "0                 NaN  http://us.imdb.com/M/title-exact?Star%20Wars%2...   \n",
       "1                 NaN          http://us.imdb.com/Title?Contact+(1997/I)   \n",
       "2                 NaN    http://us.imdb.com/M/title-exact?Fargo%20(1996)   \n",
       "3                 NaN  http://us.imdb.com/M/title-exact?Return%20of%2...   \n",
       "4                 NaN          http://us.imdb.com/Title?Liar+Liar+(1997)   \n",
       "\n",
       "   unknown  Action  Adventure  Animation          ...           Film-Noir  \\\n",
       "0        0       1          1          0          ...                   0   \n",
       "1        0       0          0          0          ...                   0   \n",
       "2        0       0          0          0          ...                   0   \n",
       "3        0       1          1          0          ...                   0   \n",
       "4        0       0          0          0          ...                   0   \n",
       "\n",
       "   Horror  Musical  Mystery  Romance  Sci-Fi  Thriller  War  Western  \\\n",
       "0       0        0        0        1       1         0    1        0   \n",
       "1       0        0        0        0       1         0    0        0   \n",
       "2       0        0        0        0       0         1    0        0   \n",
       "3       0        0        0        1       1         0    1        0   \n",
       "4       0        0        0        0       0         0    0        0   \n",
       "\n",
       "   ranking_rating_times  \n",
       "0                     0  \n",
       "1                     1  \n",
       "2                     2  \n",
       "3                     3  \n",
       "4                     4  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 根据频次大小依次取电影信息,merge通过键拼接列，left表示取一边，可以根据一个或多个键将不同DataFrame中的行连接起来\n",
    "df_items_sorted_by_rating_times_merge = pd.merge(df_items_sorted_by_rating_times, df_items, how='left', left_on='item_id', right_on='item_id')\n",
    "df_items_sorted_by_rating_times_merge['ranking_rating_times']=range(items_rating_times.count()) # 加上排名,数字越小，排在越前面\n",
    "\n",
    "df_items_sorted_by_rating_times_merge.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj8AAAJ/CAYAAACX9LJbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XlcVPXi//H3sC8iKgqIAu6luWRq\nimZaKmYureoNI1zLrMy9zHK7V23RNPXmdnPLrcW01CQo0zR3v1maZua+gJoiuCAufH5/9HB+joBB\ngTN0Xs/H4zyu55zPnHkPnivvzjY2Y4wRAACARbg5OwAAAMDtRPkBAACWQvkBAACWQvkBAACWQvkB\nAACWQvkBAACWQvkBAACWQvkBAACWQvkBAACWQvkBXMzs2bNls9lks9m0evXqLOuNMapUqZJsNpua\nNm1aIBmOHz+u4cOHa/v27QWyfWe5/rM9ePBggb/X6tWr7X+Ps2fPznbMgw8+KJvNpnLlyhVolnLl\nyqlz584F+h5AYUL5AVxUQECAPvjggyzL16xZo3379ikgIKDA3vv48eMaMWLEP678OENOf48HDhzQ\n6tWrVbRo0QLPsGTJEr3xxhsF/j5AYUH5AVxUx44dtXjxYqWlpTks/+CDDxQVFaWIiAgnJcN1Fy9e\n/NMxHTt21Lp167R3716H5TNnzlSZMmXUqFGjgopnV7t2bVWsWLHA3wcoLCg/gIt66qmnJEkLFy60\nL0tNTdXixYvVtWvXbF9z5swZ9erVS2XKlJGXl5cqVKigIUOGKCMjw2HcJ598ovr16yswMFB+fn6q\nUKGCfZurV69WvXr1JEldunSxn7oZPnx4jlmvn05KTExUly5dVKJECfn7+6tt27bav39/lvEzZ85U\nrVq15OPjoxIlSuixxx7T7t27HcZ07txZRYoU0c8//6xmzZrJ399fpUqV0osvvuhQOg4ePJjjqaU/\nyy1JiYmJeuSRR1S2bFn5+PioUqVKeu655/T77787jBs+fLhsNpv+7//+T08++aSKFy+eq0LRokUL\nhYeHa+bMmfZlmZmZmjNnjuLi4uTmlvWf4UuXLmnw4MEqX768vLy8VKZMGb3wwgs6e/asfcyjjz6q\nyMhIZWZmZnl9/fr1dc8999jnszvtlZaWpgEDBji8R58+fXThwgWHcbfaV4DCivIDuKiiRYvqySef\ndPiluXDhQrm5ualjx45Zxl+6dEkPPPCA5s6dq379+mnFihV6+umn9fbbb+vxxx+3j9uwYYM6duyo\nChUqaNGiRVqxYoWGDh2qq1evSpLuuecezZo1S5L0+uuva8OGDdqwYYO6d+/+p5m7desmNzc3LViw\nQBMmTNDmzZvVtGlTh1/aY8aMUbdu3XTXXXfps88+03vvvaeffvpJUVFRWY6OXLlyRQ8//LCaNWum\npUuX6sUXX9S0adOy/fx/1b59+xQVFaUpU6YoISFBQ4cO1aZNm3TffffpypUrWcY//vjjqlSpkj75\n5BNNnTr1T7fv5uamzp07a+7cubp27ZokKSEhQUePHlWXLl2yjDfG6NFHH9XYsWMVGxurFStWqF+/\nfpozZ44efPBBe5Ht2rWrDh8+rFWrVjm8/pdfftHmzZuz3fZ1Fy9eVJMmTTRnzhz17t1bK1eu1Cuv\nvKLZs2erXbt2MsZI+vN9BSi0DACXMmvWLCPJbNmyxXz77bdGktm5c6cxxph69eqZzp07G2OMueuu\nu0yTJk3sr5s6daqRZD7++GOH7b311ltGkklISDDGGDN27FgjyZw9ezbHDFu2bDGSzKxZs/KU+bHH\nHnNY/v333xtJ5j//+Y8xxpiUlBTj6+trHn74YYdxhw8fNt7e3iYmJsa+LC4uzkgy7733nsPYUaNG\nGUlm3bp1xhhjDhw4kGNWSWbYsGFZch44cCDbz5GZmWmuXLliDh06ZCSZzz//3L5u2LBhRpIZOnTo\nn/48jDH2v7tPPvnE7N+/39hsNrN8+XJjjDHt27c3TZs2NcYY07p1axMZGWl/XXx8vJFk3n77bYft\nffTRR0aSmT59ujHGmCtXrpiQkBCHn5kxxgwaNMh4eXmZ33//3b4sMjLSxMXF2efHjBlj3NzczJYt\nWxxe++mnnxpJ5ssvvzTG5G5fAQojjvwALqxJkyaqWLGiZs6cqR07dmjLli05nnJYtWqV/P399eST\nTzosv36645tvvpEk+ymtDh066OOPP9axY8fyLW+nTp0c5hs2bKjIyEh9++23kv44kpCenp7lFEx4\neLgefPBBe8ZbbTMmJkaS7Nv8u06ePKmePXsqPDxcHh4e8vT0VGRkpCRlORUnSU888USe36N8+fJq\n2rSpZs6cqdOnT+vzzz+/5d+jpCw/o/bt28vf39/+M/Lw8NDTTz+tzz77TKmpqZKka9eu6cMPP9Qj\njzyioKCgHPMsX75c1atX1913362rV6/ap5YtWzrcZViQ+wrgTJQfwIXZbDZ16dJF8+bN09SpU1Wl\nShU1btw427GnT59WaGiobDabw/Lg4GB5eHjo9OnTkqT7779fS5cu1dWrV/XMM8+obNmyql69usO1\nRX9VaGhotsuuv/f1/y1dunSWcWFhYfb113l4eGT5JX79PW4e+1dkZmYqOjpan332mQYNGqRvvvlG\nmzdv1saNGyVJ6enpWV6TXfbc6Natm5YtW6Z3331Xvr6+WUrqdadPn5aHh4dKlSrlsNxmszn8LKU/\nTn1dunRJixYtkiR99dVXSkpKuuUpL0k6ceKEfvrpJ3l6ejpMAQEBMsbYr3cqyH0FcCbKD+DiOnfu\nrN9//11Tp0695S+1oKAgnThxwn69xnUnT57U1atXVbJkSfuyRx55RN98841SU1O1evVqlS1bVjEx\nMdqwYcPfypqcnJztsusF5vr/JiUlZRl3/Phxh4ySdPXq1Swl5/p7XN+Wj4+PJGW5qDs35Wjnzp36\n8ccf9c477+ill15S06ZNVa9evVseNbm5XObW448/Lj8/P7355pv617/+JV9f32zHBQUF6erVqzp1\n6pTDcmOMkpOTHX5G1apV07333mu/RmvWrFkKCwtTdHT0LbOULFlSNWrU0JYtW7KdbrwtvqD2FcCZ\nKD+AiytTpowGDhyotm3bKi4uLsdxzZo10/nz57V06VKH5XPnzrWvv5m3t7eaNGmit956S5L0ww8/\n2JdL2R/5uJX58+c7zK9fv16HDh2yP4wxKipKvr6+mjdvnsO4o0ePatWqVdlmvHmbCxYskCT7NkNC\nQuTj46OffvrJYdznn3/+p3mvF5nrn/e6adOm/elr88rX11dDhw5V27Zt9fzzz+c47vrP4Oaf0eLF\ni3XhwoUsP6MuXbpo06ZNWrdunZYtW6a4uDi5u7vfMkubNm20b98+BQUFqW7dulmm7B66mNO+AhRG\nHs4OAODPvfnmm3865plnntF///tfxcXF6eDBg6pRo4bWrVun0aNH6+GHH1bz5s0lSUOHDtXRo0fV\nrFkzlS1bVmfPntV7770nT09PNWnSRJJUsWJF+fr6av78+apataqKFCmisLAwhYWF3TLD1q1b1b17\nd7Vv315HjhzRkCFDVKZMGfXq1UuSVKxYMb3xxht67bXX9Mwzz+ipp57S6dOnNWLECPn4+GjYsGEO\n2/Py8tK4ceN0/vx51atXT+vXr9d//vMftWrVSvfdd5+kPwrM008/rZkzZ6pixYqqVauWNm/ebC9J\nt3LnnXeqYsWKevXVV2WMUYkSJbRs2TIlJib+6Wv/in79+qlfv363HNOiRQu1bNlSr7zyitLS0tSo\nUSP99NNPGjZsmGrXrq3Y2FiH8U899ZT69eunp556ShkZGbl6knOfPn20ePFi3X///erbt69q1qyp\nzMxMHT58WAkJCerfv7/q16+fq30FKJSce701gJvdeLfXrdx8t5cxxpw+fdr07NnTlC5d2nh4eJjI\nyEgzePBgc+nSJfuY5cuXm1atWpkyZcoYLy8vExwcbB5++GGzdu1ah20tXLjQ3HnnncbT0zPLXVM5\nZU5ISDCxsbGmWLFi9ru69u7dm2X8//73P1OzZk3j5eVlAgMDzSOPPGJ+/vlnhzFxcXHG39/f/PTT\nT6Zp06bG19fXlChRwjz//PPm/PnzDmNTU1NN9+7dTUhIiPH39zdt27Y1Bw8ezNXdXrt27TItWrQw\nAQEBpnjx4qZ9+/bm8OHDWV57/W6vU6dO5fhzuNGNd3vdys13exljTHp6unnllVdMZGSk8fT0NKVL\nlzbPP/+8SUlJyXYbMTExRpJp1KhRtutvvtvLGGPOnz9vXn/9dXPHHXfY/x5q1Khh+vbta5KTk40x\nud9XgMLGZsxNFwgAQB7Nnj1bXbp00ZYtW1S3bt182Wbnzp316aef6vz58/myPQC4jmt+AACApVB+\nAACApXDaCwAAWApHfgAAgKVQfgAAgKVQfgAAgKXwkEP98f0+x48fV0BAwF9+dD0AALi9jDE6d+6c\nwsLC5OaW++M5lB/98Z1C4eHhzo4BAAD+giNHjqhs2bK5Hk/5kRQQECDpjx9e0aJFnZwGAADkRlpa\nmsLDw+2/x3OL8qP//+WGRYsWpfwAAFDI5PWSFadf8Hzs2DE9/fTTCgoKkp+fn+6++25t27bNvt4Y\no+HDhyssLEy+vr5q2rSpfv75Z4dtpKSkKDY2VoGBgQoMDFRsbKzOnj17uz8KAAAoBJxaflJSUtSo\nUSN5enpq5cqV2rVrl8aNG6dixYrZx7z99tt69913NXnyZG3ZskWhoaFq0aKFzp07Zx8TExOj7du3\nKz4+XvHx8dq+fXuWbz4GAACQnPyE51dffVXff/+91q5dm+16Y4zCwsLUp08fvfLKK5KkjIwMhYSE\n6K233tJzzz2n3bt3q1q1atq4caPq168vSdq4caOioqL0yy+/6I477vjTHGlpaQoMDFRqaiqnvQAA\nKCT+6u9vpx75+eKLL1S3bl21b99ewcHBql27tmbMmGFff+DAASUnJys6Otq+zNvbW02aNNH69esl\nSRs2bFBgYKC9+EhSgwYNFBgYaB9zs4yMDKWlpTlMAADAGpxafvbv368pU6aocuXK+uqrr9SzZ0/1\n7t1bc+fOlSQlJydLkkJCQhxeFxISYl+XnJys4ODgLNsODg62j7nZmDFj7NcHBQYGcps7AAAW4tTy\nk5mZqXvuuUejR49W7dq19dxzz6lHjx6aMmWKw7ibr+I2xjgsy+4q75vH3Gjw4MFKTU21T0eOHMmH\nTwMAAAoDp5af0qVLq1q1ag7LqlatqsOHD0uSQkNDJSnLEZyTJ0/ajwaFhobqxIkTWbZ96tSpLEeM\nrvP29rbf1s7t7QAAWItTy0+jRo20Z88eh2W//vqrIiMjJUnly5dXaGioEhMT7esvX76sNWvWqGHD\nhpKkqKgopaamavPmzfYxmzZtUmpqqn0MAADAdU59yGHfvn3VsGFDjR49Wh06dNDmzZs1ffp0TZ8+\nXdIfp7P69Omj0aNHq3LlyqpcubJGjx4tPz8/xcTESPrjSNFDDz2kHj16aNq0aZKkZ599Vm3atMnV\nnV4AAMBanHqruyQtX75cgwcP1t69e1W+fHn169dPPXr0sK83xmjEiBGaNm2aUlJSVL9+ff33v/9V\n9erV7WPOnDmj3r1764svvpAktWvXTpMnT3Z4XtCtcKs7AACFz1/9/e308uMKKD8AABQ+hfI5PwAA\nALcb5QcAAFgK5QcAAFiKU+/2soLxib86O0IWfVtUcXYEAACchiM/AADAUig/AADAUig/AADAUig/\nAADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADA\nUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/\nAADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADA\nUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/AADAUig/\nAADAUig/AADAUig/AADAUjycHQCuaXzir86OkEXfFlWcHQEA8A9A+cE/SmEtbYU1NwAURk497TV8\n+HDZbDaHKTQ01L7eGKPhw4crLCxMvr6+atq0qX7++WeHbaSkpCg2NlaBgYEKDAxUbGyszp49e7s/\nCgAAKCScfs3PXXfdpaSkJPu0Y8cO+7q3335b7777riZPnqwtW7YoNDRULVq00Llz5+xjYmJitH37\ndsXHxys+Pl7bt29XbGysMz4KAAAoBJx+2svDw8PhaM91xhhNmDBBQ4YM0eOPPy5JmjNnjkJCQrRg\nwQI999xz2r17t+Lj47Vx40bVr19fkjRjxgxFRUVpz549uuOOO7J9z4yMDGVkZNjn09LSCuCTAQAA\nV+T0Iz979+5VWFiYypcvr3/961/av3+/JOnAgQNKTk5WdHS0fay3t7eaNGmi9evXS5I2bNigwMBA\ne/GRpAYNGigwMNA+JjtjxoyxnyYLDAxUeHh4AX06AADgapxafurXr6+5c+fqq6++0owZM5ScnKyG\nDRvq9OnTSk5OliSFhIQ4vCYkJMS+Ljk5WcHBwVm2GxwcbB+TncGDBys1NdU+HTlyJB8/FQAAcGVO\nPe3VqlUr+59r1KihqKgoVaxYUXPmzFGDBg0kSTabzeE1xhiHZTevz27Mzby9veXt7f134wMAgELI\n6ae9buTv768aNWpo79699uuAbj6Cc/LkSfvRoNDQUJ04cSLLdk6dOpXliBEAAIDkYuUnIyNDu3fv\nVunSpVW+fHmFhoYqMTHRvv7y5ctas2aNGjZsKEmKiopSamqqNm/ebB+zadMmpaam2scAAADcyKmn\nvQYMGKC2bdsqIiJCJ0+e1H/+8x+lpaUpLi5ONptNffr00ejRo1W5cmVVrlxZo0ePlp+fn2JiYiRJ\nVatW1UMPPaQePXpo2rRpkqRnn31Wbdq0yfFOLwAAYG1OLT9Hjx7VU089pd9//12lSpVSgwYNtHHj\nRkVGRkqSBg0apPT0dPXq1UspKSmqX7++EhISFBAQYN/G/Pnz1bt3b/tdYe3atdPkyZOd8nkAAIDr\nc2r5WbRo0S3X22w2DR8+XMOHD89xTIkSJTRv3rx8TgYAAP6pXOqaHwAAgILm9Cc8Ayi8+EJWAIUR\nR34AAIClUH4AAIClcNoLgOVwug6wNo78AAAAS+HIDwAUEhyxAvIHR34AAIClUH4AAIClUH4AAICl\nUH4AAIClUH4AAIClUH4AAIClUH4AAIClUH4AAIClUH4AAIClUH4AAIClUH4AAIClUH4AAIClUH4A\nAIClUH4AAICleDg7AADgn2184q/OjpBF3xZVnB0BTsSRHwAAYCmUHwAAYCmUHwAAYCmUHwAAYCmU\nHwAAYCmUHwAAYCmUHwAAYCmUHwAAYCmUHwAAYCmUHwAAYCmUHwAAYCmUHwAAYCl8sSkAANngC1n/\nuSg/AAD8g1Da/hynvQAAgKVQfgAAgKVQfgAAgKVQfgAAgKVQfgAAgKVQfgAAgKVQfgAAgKVQfgAA\ngKVQfgAAgKVQfgAAgKVQfgAAgKVQfgAAgKVQfgAAgKW4TPkZM2aMbDab+vTpY1+WkZGhl156SSVL\nlpS/v7/atWuno0ePOrzu8OHDatu2rfz9/VWyZEn17t1bly9fvt3xAQBAIeES5WfLli2aPn26atas\n6bC8T58+WrJkiRYtWqR169bp/PnzatOmja5duyZJunbtmlq3bq0LFy5o3bp1WrRokRYvXqz+/fs7\n42MAAIBCwOnl5/z58+rUqZNmzJih4sWL25enpqbqgw8+0Lhx49S8eXPVrl1b8+bN044dO/T1119L\nkhISErRr1y7NmzdPtWvXVvPmzTVu3DjNmDFDaWlpzvpIAADAhTm9/Lzwwgtq3bq1mjdv7rB827Zt\nunLliqKjo+3LwsLCVL16da1fv16StGHDBlWvXl1hYWH2MS1btlRGRoa2bduW43tmZGQoLS3NYQIA\nANbg4cw3X7RokbZt26atW7dmWZecnCwvLy+Ho0GSFBISouTkZPuYkJAQh/XFixeXl5eXfUx2xowZ\noxEjRuTDJwAAAIWN0478HDlyRC+//LLmz58vHx+fXL/OGCObzWafv/HPOY252eDBg5Wammqfjhw5\nkrfwAACg0HJa+dm2bZtOnjypOnXqyMPDQx4eHlqzZo0mTpwoDw8PhYSE6PLly0pJSXF43cmTJ+1H\ne0JDQ7Mc4UlJSdGVK1eyHBG6kbe3t4oWLeowAQAAa3Ba+WnWrJl27Nih7du326e6deuqU6dO9j97\nenoqMTHR/pqkpCTt3LlTDRs2lCRFRUVp586dSkpKso9JSEiQt7e36tSpc9s/EwAAcH1Ou+YnICBA\n1atXd1jm7++voKAg+/Ju3bqpf//+CgoKUokSJTRgwADVqFHDfnF0dHS0qlWrptjYWL3zzjs6c+aM\n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\nHwUAABQSTi0/a9as0QsvvKCNGzcqMTFRV69eVXR0tC5cuGAf06dPHy1ZskSLFi3SunXrdP78ebVp\n00bXrl2TJF27dk2tW7fWhQsXtG7dOi1atEiLFy9W//79nfWxAACAC/Nw5pvHx8c7zM+aNUvBwcHa\ntm2b7r//fqWmpuqDDz7Qhx9+qObNm0uS5s2bp/DwcH399ddq2bKlEhIStGvXLh05ckRhYWGSpHHj\nxqlz584aNWqUihYtets/FwAAcF0udc1PamqqJKlEiRKSpG3btunKlSuKjo62jwkLC1P16tW1fv16\nSdKGDRtUvXp1e/GRpJYtWyojI0Pbtm3L9n0yMjKUlpbmMAEAAGtwmfJjjFG/fv103333qXr16pKk\n5ORkeXl5qXjx4g5jQ0JClJycbB8TEhLisL548eLy8vKyj7nZmDFjFBgYaJ/Cw8ML4BMBAABX5DLl\n58UXX9RPP/2khQsX/ulYY4xsNpt9/sY/5zTmRoMHD1Zqaqp9OnLkyF8PDgAAChWXKD8vvfSSvvji\nC3377bcqW7asfXloaKguX76slJQUh/EnT560H+0JDQ3NcoQnJSVFV65cyXJE6Dpvb28VLVrUYQIA\nANbg1PJjjNGLL76ozz77TKtWrVL58uUd1tepU0eenp5KTEy0L0tKStLOnTvVsGFDSVJUVJR27typ\npKQk+5iEhAR5e3urTp06t+eDAACAQsOpd3u98MILWrBggT7//HMFBATYj+AEBgbK19dXgYGB6tat\nm/r376+goCCVKFFCAwYMUI0aNex3f0VHR6tatWqKjY3VO++8ozNnzmjAgAHq0aMHR3QAAEAWTi0/\nU6ZMkSQ1bdrUYfmsWbPUuXNnSdL48ePl4eGhDh06KD09Xc2aNdPs2bPl7u4uSXJ3d9eKFSvUq1cv\nNWrUSL6+voqJidHYsWNv50cBAACFhFPLjzHmT8f4+Pho0qRJmjRpUo5jIiIitHz58vyMBgAA/qFc\n4oJnAACA24XyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXy\nAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAA\nLIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXy\nAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAA\nLIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXyAwAALIXy\nAwAALIXyAwAALMWp5ee7775T27ZtFRYWJpvNpqVLlzqsN8Zo+PDhCgsLk6+vr5o2baqff/7ZYUxK\nSopiY2MVGBiowMBAxcbG6uzZs7fzYwAAgELEqeXnwoULqlWrliZPnpzt+rffflvvvvuuJk+erC1b\ntig0NFQtWrTQuXPn7GNiYmK0fft2xcfHKz4+Xtu3b1dsbOzt+ggAAKCQ8XDmm7dq1UqtWrXKdp0x\nRhMmTNCQIUP0+OOPS5LmzJmjkJAQLViwQM8995x2796t+Ph4bdy4UfXr15ckzZgxQ1FRUdqzZ4/u\nuOOO2/ZZAABA4eCy1/wcOHBAycnJio6Oti/z9vZWkyZNtH79eknShg0bFBgYaC8+ktSgQQMFBgba\nx2QnIyNDaWlpDhMAALAGly0/ycnJkqSQkBCH5SEhIfZ1ycnJCg4OzvLa4OBg+5jsjBkzxn6NUGBg\noMLDw/MxOQAAcGUuW36us9lsDvPGGIdlN6/PbszNBg8erNTUVPt05MiR/AsMAABcmlOv+bmV0NBQ\nSX8c3SldurR9+cmTJ+1Hg0JDQ3XixIksrz116lSWI0Y38vb2lre3dz4nBgAAhYHLHvkpX768QkND\nlZiYaF92+fJlrVmzRg0bNpQkRUVFKTU1VZs3b7aP2bRpk1JTU+1jAAAAbuTUIz/nz5/Xb7/9Zp8/\ncOCAtm/frhIlSigiIkJ9+vTR6NGjVblyZVWuXFmjR4+Wn5+fYmJiJElVq1bVQw89pB49emjatGmS\npGeffVZt2rThTi8AAJAtp5afrVu36oEHHrDP9+vXT5IUFxen2bNna9CgQUpPT1evXr2UkpKi+vXr\nKyEhQQEBAfbXzJ8/X71797bfFdauXbscnxsEAADg1PLTtGlTGWNyXG+z2TR8+HANHz48xzElSpTQ\nvHnzCiAdAAD4J3LZa34AAAAKAuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUH\nAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABY\nCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUH\nAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABY\nCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUHAABYCuUH\nAABYCuUHAABYCuUHAABYCuUHAABYyj+m/Lz//vsqX768fHx8VKdOHa1du9bZkQAAgAv6R5Sfjz76\nSH369NGQIUP0ww8/qHHjxmrVqpUOHz7s7GgAAMDF/CPKz7vvvqtu3bqpe/fuqlq1qiZMmKDw8HBN\nmTLF2dEAAICL8XB2gL/r8uXL2rZtm1599VWH5dHR0Vq/fn22r8nIyFBGRoZ9PjU1VZKUlpaW7/ku\nXTif79v8u3LzOcmdf8h9e5H79iL37fVPzv13tmuMydsLTSF37NgxI8l8//33DstHjRplqlSpku1r\nhg0bZiQxMTExMTEx/QOmI0eO5Kk7FPojP9fZbDaHeWNMlmXXDR48WP369bPPZ2Zm6syZMwoKCsrx\nNc6Wlpam8PBwHTlyREWLFnV2nFwj9+1F7tuL3LcXuW+vwpDbGKNz584pLCwsT68r9OWnZMmScnd3\nV3JyssPykydPKiQkJNvXeHt7y9vb22FZsWLFCixjfipatKjL7oS3Qu7bi9y3F7lvL3LfXq6eOzAw\nMM+vKfQXPHt5ealOnTpKTEx0WJ6YmKiGDRs6KRUAAHBVhf7IjyT169dPsbGxqlu3rqKiojR9+nQd\nPnxYPXv2dHY0AADgYtyHDx8+3Nkh/q7q1asrKChIo0eP1tixY5Wenq4PP/xQtWrVcna0fOXu7q6m\nTZvKw6NwdVZy317kvr3IfXuR+/YqrLn/jM2YvN4fBgAAUHgV+mt+AAAA8oLyAwAALIXyAwAALIXy\nAwAALIXyAwAALOWfde/aP8jBgwe1du1aHTx4UBcvXlSpUqVUu3ZtRUVFycfHx9nx/pGOHz+uQ4cO\n2X/eVatWlaenp7Nj5VpGRkaWJ5cD1x05csTh35O77rqL/QWWRflxMQsWLNDEiRO1efNmBQcHq0yZ\nMvL19dWZM2e0b98++fj4qFOnTnrllVcUGRnp7LgOjDFas2ZNtqWtefPmCg8Pd3bELI4ePapp06Zp\n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\nMWKEWbZsmXnqqaeMv7+/2bZtm7NjZtGlSxdTvXp1M2nSJNOkSRPz6KOPmpo1a5p169aZ9evXm3r1\n6plnnnnG2TGz2LJliwkMDDR33323iYqKMm5ubiY2NtZ07NjRFCtWzERFRbnkrcCFdf9+5513TOnS\npc2ECRPM1KlTTdWqVc3IkSPNypUrTWxsrPHz88ty+7sr+Oabb4yvr6956KGHzGOPPWa8vb1Nz549\nzcsvv2wiIiJM1apVc/2lrbcT+3fhQflxMYX1ORGtWrUyzz33nP2bxseMGWNatWpljDHm119/NeXK\nlTPDhg1zYsLslS9f3uHBhrt37zYlS5a0P1H7hRdeMNHR0c6Kl6PSpUub77//3hhjTHJysrHZbA7P\nUlq3bp0pU6aMs+LlqFGjRmb48OH2+Q8//NDUr1/fGGPMmTNnzN1332169+7trHg5Kqz7d7ly5cyX\nX35pn9+zZ48JCgqy/yLr3bu3adGihbPi5ahOnTr2h3ga88e3zlevXt0YY0x6erq5//77Tbdu3ZwV\nL0fs34UH5cfF5HSr+3fffWfi4uKMv7+/Sz6UzM/Pz/z666/2+YyMDOPp6Wl/wvPSpUtNuXLlnBUv\nR35+fubAgQMOyzw8PMzx48eNMcb88MMPJiAgwAnJbs3Pz88cPHjQPu/p6elwdHD//v0uuZ/4+vqa\nffv22eevXbtmPD09TXJysjHGmISEBJe8hfmfsn9nZmY67N/bt293yYfX+fj4ODzEMzMz03h6epqk\npCRjzB9PXi9VqpSz4uWI/bvw4CGHLianu6UaN26s2bNn6/jx4xo/fvxtTvXnihUrpnPnztnnL168\nqKtXr9qvV6pZs6aSkpKcFS9HVapUsX8xqCStXr1anp6e9guGfX19nRXtlipXrqzly5dLklauXCkf\nHx8lJCTY13/11VcqX768s+LlKDg42GE/OHHihK5evaqiRYtK+uNznTlzxlnxclSY9+/ExET7/Lff\nfisvLy/7/u3j4+OSd2iGhYVp37599vmDBw/q2rVr9gftRUREOPx9uAr270LE2e0LjgrrQw7j4uJM\nkyZNzO7du83+/fvtX4h33erVq13ycfQLFiwwnp6eJiYmxnTt2tUEBAQ4fNHj9OnTTYMGDZyYMHvz\n5s0z7u7uplKlSsbHx8d8+umnJiwszHTo0MH861//Ml5eXmby5MnOjpnFyy+/bKpXr25WrlxpVq1a\n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\nGWkpAtMh+QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bcd33a0128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 前十大流行电影\n",
    "popular_items_count_top_10 = df_items_sorted_by_rating_times_merge.iloc[0:10]['rating_times']\n",
    "popular_items_top_10_titles =  df_items_sorted_by_rating_times_merge.iloc[0:10]['title']\n",
    "\n",
    "objects = (list(popular_items_top_10_titles))\n",
    "y_pos = np.arange(len(objects))\n",
    "performance = list(popular_items_count_top_10)\n",
    " \n",
    "plt.rcdefaults()    \n",
    "plt.bar(y_pos, performance, align='center', alpha=0.5)\n",
    "plt.xticks(y_pos, objects, rotation='vertical')\n",
    "plt.ylabel('Rating Count')\n",
    "plt.title('Most popular Movies')\n",
    " \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_id</th>\n",
       "      <th>mean_rating</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>item_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1293</th>\n",
       "      <td>1293</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1467</th>\n",
       "      <td>1467</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1653</th>\n",
       "      <td>1653</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>814</th>\n",
       "      <td>814</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1122</th>\n",
       "      <td>1122</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         item_id  mean_rating\n",
       "item_id                      \n",
       "1293        1293          5.0\n",
       "1467        1467          5.0\n",
       "1653        1653          5.0\n",
       "814          814          5.0\n",
       "1122        1122          5.0"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#计算每个电影受欢迎度\n",
    "items_mean_rating = df_triplet['rating'].groupby(df_triplet['item_id']).mean()\n",
    "items_mean_rating = items_mean_rating.sort_values(ascending = False)\n",
    "\n",
    "df_items_sorted_by_mean_rating = pd.DataFrame({'item_id':items_mean_rating.index, 'mean_rating':items_mean_rating})\n",
    "df_items_sorted_by_mean_rating.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_id</th>\n",
       "      <th>mean_rating</th>\n",
       "      <th>rating_times</th>\n",
       "      <th>title</th>\n",
       "      <th>release_date</th>\n",
       "      <th>video_release_date</th>\n",
       "      <th>imdb_url</th>\n",
       "      <th>unknown</th>\n",
       "      <th>Action</th>\n",
       "      <th>Adventure</th>\n",
       "      <th>...</th>\n",
       "      <th>Horror</th>\n",
       "      <th>Musical</th>\n",
       "      <th>Mystery</th>\n",
       "      <th>Romance</th>\n",
       "      <th>Sci-Fi</th>\n",
       "      <th>Thriller</th>\n",
       "      <th>War</th>\n",
       "      <th>Western</th>\n",
       "      <th>ranking_rating_times</th>\n",
       "      <th>ranking_mean_rate</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1293</td>\n",
       "      <td>5.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Star Kid (1997)</td>\n",
       "      <td>16-Jan-1998</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?imdb-title-12...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1450</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1467</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2</td>\n",
       "      <td>Saint of Fort Washington, The (1993)</td>\n",
       "      <td>01-Jan-1993</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Saint%20of%20...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1483</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1653</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1</td>\n",
       "      <td>Entertaining Angels: The Dorothy Day Story (1996)</td>\n",
       "      <td>27-Sep-1996</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Entertaining%...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1652</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>814</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1</td>\n",
       "      <td>Great Day in Harlem, A (1994)</td>\n",
       "      <td>01-Jan-1994</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Great%20Day%2...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1661</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1122</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1</td>\n",
       "      <td>They Made Me a Criminal (1939)</td>\n",
       "      <td>01-Jan-1939</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?They%20Made%2...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1615</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 28 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   item_id  mean_rating  rating_times  \\\n",
       "0     1293          5.0             3   \n",
       "1     1467          5.0             2   \n",
       "2     1653          5.0             1   \n",
       "3      814          5.0             1   \n",
       "4     1122          5.0             1   \n",
       "\n",
       "                                               title release_date  \\\n",
       "0                                    Star Kid (1997)  16-Jan-1998   \n",
       "1               Saint of Fort Washington, The (1993)  01-Jan-1993   \n",
       "2  Entertaining Angels: The Dorothy Day Story (1996)  27-Sep-1996   \n",
       "3                      Great Day in Harlem, A (1994)  01-Jan-1994   \n",
       "4                     They Made Me a Criminal (1939)  01-Jan-1939   \n",
       "\n",
       "   video_release_date                                           imdb_url  \\\n",
       "0                 NaN  http://us.imdb.com/M/title-exact?imdb-title-12...   \n",
       "1                 NaN  http://us.imdb.com/M/title-exact?Saint%20of%20...   \n",
       "2                 NaN  http://us.imdb.com/M/title-exact?Entertaining%...   \n",
       "3                 NaN  http://us.imdb.com/M/title-exact?Great%20Day%2...   \n",
       "4                 NaN  http://us.imdb.com/M/title-exact?They%20Made%2...   \n",
       "\n",
       "   unknown  Action  Adventure        ...          Horror  Musical  Mystery  \\\n",
       "0        0       0          1        ...               0        0        0   \n",
       "1        0       0          0        ...               0        0        0   \n",
       "2        0       0          0        ...               0        0        0   \n",
       "3        0       0          0        ...               0        0        0   \n",
       "4        0       0          0        ...               0        0        0   \n",
       "\n",
       "   Romance  Sci-Fi  Thriller  War  Western  ranking_rating_times  \\\n",
       "0        0       1         0    0        0                  1450   \n",
       "1        0       0         0    0        0                  1483   \n",
       "2        0       0         0    0        0                  1652   \n",
       "3        0       0         0    0        0                  1661   \n",
       "4        0       0         0    0        0                  1615   \n",
       "\n",
       "   ranking_mean_rate  \n",
       "0                  0  \n",
       "1                  1  \n",
       "2                  2  \n",
       "3                  3  \n",
       "4                  4  \n",
       "\n",
       "[5 rows x 28 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 根据频次大小依次取电影信息\n",
    "df_items_sorted_by_mean_rating_merge = pd.merge(df_items_sorted_by_mean_rating, df_items_sorted_by_rating_times_merge, how='left', left_on='item_id', right_on='item_id')\n",
    "df_items_sorted_by_mean_rating_merge['ranking_mean_rate']=range(items_mean_rating.count()) # 加上排名,数字越小，排在越前面\n",
    "\n",
    "df_items_sorted_by_mean_rating_merge.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAAM3CAYAAADx02A7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XmczXX///HnmX3GzFjGbsYYIdmF\nREK2UJaUXMpaKpUr5RJRtq6k7bqiXEhXaBFa0IVSsoQrZYlsXZJddtWMsQxjXr8/fOf8HIPmHPMx\n86nH/XY7t/os8zovn3M+Z57zWd7HY2YmAACAPC4otxsAAADIDkILAABwBUILAABwBUILAABwBUIL\nAABwBUILAABwBUILAABwBUILAABwBUILAABwBUILkEOmTJkij8cjj8ejJUuWZFluZipXrpw8Ho8a\nN27sSA/79u3T8OHDtW7dOkfq55bMbbtz507Hn2vJkiXe13HKlCkXXadJkybyeDwqU6aMo72UKVNG\nPXr0cPQ5ADchtAA5LCYmRm+99VaW+V999ZW2bdummJgYx5573759GjFixB8utOSGS72OO3bs0JIl\nSxQbG+t4D7NmzdKQIUMcfx7ALQgtQA7r1KmTPv74Y6WkpPjMf+utt1SvXj2VLl06lzpDphMnTvzu\nOp06ddLy5cu1detWn/mTJk1SqVKldNNNNznVnlfNmjV1zTXXOP48gFsQWoAc1rlzZ0nStGnTvPOS\nk5P18ccf67777rvoz/zyyy965JFHVKpUKYWFhals2bJ6+umnlZaW5rPehx9+qLp16yp//vyKiopS\n2bJlvTWXLFmiOnXqSJJ69uzpPcUxfPjwS/aaedplwYIF6tmzpwoVKqR8+fKpTZs22r59e5b1J02a\npOrVqysiIkKFChXSHXfcoR9++MFnnR49eig6OlqbNm1S06ZNlS9fPhUpUkR9+vTxCQs7d+685CmY\n3+tbkhYsWKB27dopPj5eERERKleunB566CEdOXLEZ73hw4fL4/Hou+++01133aWCBQtmKwg0b95c\nCQkJmjRpkndeRkaG3n77bXXv3l1BQVk/Pk+dOqVBgwYpKSlJYWFhKlWqlB599FH99ttv3nXat2+v\nxMREZWRkZPn5unXr6vrrr/dOX+z0UEpKivr37+/zHI8//riOHz/us97l3iuAWxFagBwWGxuru+66\ny+eX3bRp0xQUFKROnTplWf/UqVO65ZZb9M4776hfv36aN2+eunTpopdeekkdOnTwrrdixQp16tRJ\nZcuW1fTp0zVv3jwNHTpU6enpkqTrr79ekydPliQ988wzWrFihVasWKFevXr9bs/333+/goKC9P77\n72v06NFauXKlGjdu7PPLdtSoUbr//vtVuXJlzZw5U2PGjNH69etVr169LEcjzpw5o9atW6tp06aa\nPXu2+vTpozfeeOOi//5Abdu2TfXq1dP48eP1xRdfaOjQofr222/VoEEDnTlzJsv6HTp0ULly5fTh\nhx9qwoQJv1s/KChIPXr00DvvvKOzZ89Kkr744gvt3btXPXv2zLK+mal9+/Z65ZVX1LVrV82bN0/9\n+vXT22+/rSZNmngD6H333afdu3dr0aJFPj//v//9TytXrrxo7UwnTpxQo0aN9Pbbb+uxxx7TZ599\npoEDB2rKlClq27atzEzS779XANcyADli8uTJJslWrVplixcvNkm2ceNGMzOrU6eO9ejRw8zMKleu\nbI0aNfL+3IQJE0ySffDBBz71XnzxRZNkX3zxhZmZvfLKKybJfvvtt0v2sGrVKpNkkydP9qvnO+64\nw2f+f//7X5Nkzz33nJmZ/frrrxYZGWmtW7f2WW/37t0WHh5u99xzj3de9+7dTZKNGTPGZ92RI0ea\nJFu+fLmZme3YseOSvUqyYcOGZelzx44dF/13ZGRk2JkzZ2zXrl0myT755BPvsmHDhpkkGzp06O9u\nDzPzvnYffvihbd++3Twej82dO9fMzDp27GiNGzc2M7PbbrvNEhMTvT83f/58k2QvvfSST70ZM2aY\nJJs4caKZmZ05c8aKFSvms83MzAYMGGBhYWF25MgR77zExETr3r27d3rUqFEWFBRkq1at8vnZjz76\nyCTZp59+ambZe68AbsSRFsABjRo10jXXXKNJkyZpw4YNWrVq1SUPzS9atEj58uXTXXfd5TM/87TA\nwoULJcl76ufuu+/WBx98oJ9//jnH+r333nt9puvXr6/ExEQtXrxY0rm/3E+ePJnlVEVCQoKaNGni\n7fFyNe+55x5J8ta8UocOHVLv3r2VkJCgkJAQhYaGKjExUZKynLKSpDvvvNPv50hKSlLjxo01adIk\nHT16VJ988sllX0dJWbZRx44dlS9fPu82CgkJUZcuXTRz5kwlJydLks6ePat3331X7dq1U1xc3CX7\nmTt3rqpUqaIaNWooPT3d+7j11lt97lpz8r0C5CZCC+AAj8ejnj176r333tOECRNUoUIF3XzzzRdd\n9+jRoypevLg8Ho/P/KJFiyokJERHjx6VJDVs2FCzZ89Wenq6unXrpvj4eFWpUsXn2plAFS9e/KLz\nMp87878lSpTIsl7JkiW9yzOFhIRk+eWb+RwXrhuIjIwMtWjRQjNnztSAAQO0cOFCrVy5Ut98840k\n6eTJk1l+5mK9Z8f999+vOXPm6J///KciIyOzhMtMR48eVUhIiIoUKeIz3+Px+GxL6dwpolOnTmn6\n9OmSpM8//1z79++/7KkhSTp48KDWr1+v0NBQn0dMTIzMzHs9j5PvFSA3EVoAh/To0UNHjhzRhAkT\nLvvLKC4uTgcPHvRej5Dp0KFDSk9PV+HChb3z2rVrp4ULFyo5OVlLlixRfHy87rnnHq1YseKKej1w\n4MBF52UGj8z/7t+/P8t6+/bt8+lRktLT07OEk8znyKwVEREhSVkuNs5OqNm4caO+//57vfzyy/rr\nX/+qxo0bq06dOpc9SnFhKMyuDh06KCoqSi+88IL+8pe/KDIy8qLrxcXFKT09XYcPH/aZb2Y6cOCA\nzzaqVKmSbrjhBu81SJMnT1bJkiXVokWLy/ZSuHBhVa1aVatWrbro4/zbo516rwC5idACOKRUqVJ6\n8skn1aZNG3Xv3v2S6zVt2lSpqamaPXu2z/x33nnHu/xC4eHhatSokV588UVJ0tq1a73zpYsfabic\nqVOn+kx//fXX2rVrl3cQvHr16ikyMlLvvfeez3p79+7VokWLLtrjhTXff/99SfLWLFasmCIiIrR+\n/Xqf9T755JPf7TczgGT+ezO98cYbv/uz/oqMjNTQoUPVpk0bPfzww5dcL3MbXLiNPv74Yx0/fjzL\nNurZs6e+/fZbLV++XHPmzFH37t0VHBx82V5uv/12bdu2TXFxcapdu3aWx8UGu7vUewVwo5DcbgD4\nI3vhhRd+d51u3brpX//6l7p3766dO3eqatWqWr58uZ5//nm1bt1azZo1kyQNHTpUe/fuVdOmTRUf\nH6/ffvtNY8aMUWhoqBo1aiRJuuaaaxQZGampU6fquuuuU3R0tEqWLKmSJUtetofVq1erV69e6tix\no/bs2aOnn35apUqV0iOPPCJJKlCggIYMGaLBgwerW7du6ty5s44ePaoRI0YoIiJCw4YN86kXFham\nf/zjH0pNTVWdOnX09ddf67nnnlOrVq3UoEEDSeeCR5cuXTRp0iRdc801ql69ulauXOkNN5dTsWJF\nXXPNNXrqqadkZipUqJDmzJmjBQsW/O7PBqJfv37q16/fZddp3ry5br31Vg0cOFApKSm66aabtH79\neg0bNkw1a9ZU165dfdbv3Lmz+vXrp86dOystLS1bI98+/vjj+vjjj9WwYUM98cQTqlatmjIyMrR7\n92598cUX+tvf/qa6detm670CuFLuXgcM/HGcf/fQ5Vx495CZ2dGjR613795WokQJCwkJscTERBs0\naJCdOnXKu87cuXOtVatWVqpUKQsLC7OiRYta69atbdmyZT61pk2bZhUrVrTQ0NAsd+FcqucvvvjC\nunbtagUKFPDeJbR169Ys6//73/+2atWqWVhYmOXPn9/atWtnmzZt8lmne/fuli9fPlu/fr01btzY\nIiMjrVChQvbwww9bamqqz7rJycnWq1cvK1asmOXLl8/atGljO3fuzNbdQ5s3b7bmzZtbTEyMFSxY\n0Dp27Gi7d+/O8rOZdw8dPnz4ktvhfOffPXQ5F949ZGZ28uRJGzhwoCUmJlpoaKiVKFHCHn74Yfv1\n118vWuOee+4xSXbTTTdddPmFdw+ZmaWmptozzzxj1157rfd1qFq1qj3xxBN24MABM8v+ewVwG4/Z\nBSfSAfxpTJkyRT179tSqVatUu3btHKnZo0cPffTRR0pNTc2RegCQiWtaAACAKxBaAACAK3B6CAAA\nuAJHWgAAgCsQWgAAgCsQWgAAgCu4enC5jIwM7du3TzExMQEP0Q0AAK4uM9OxY8dUsmRJBQVl//iJ\nq0PLvn37lJCQkNttAACAAOzZs0fx8fHZXt/VoSUmJkbSuX90bGxsLncDAACyIyUlRQkJCd7f49nl\n6tCSeUooNjaW0AIAgMv4e2kHF+ICAABXILQAAABXILQAAABXILQAAABXILQAAABXILQAAABXILQA\nAABXILQAAABXILQAAABXILQAAABXyNXQMnz4cHk8Hp9H8eLFc7MlAACQR+X6dw9VrlxZX375pXc6\nODg4F7sBAAB5Va6HlpCQEI6uAACA35Xr17Rs3bpVJUuWVFJSkv7yl79o+/btl1w3LS1NKSkpPg8A\nAPDnkKtHWurWrat33nlHFSpU0MGDB/Xcc8+pfv362rRpk+Li4rKsP2rUKI0YMeKq9ffqgh9zpM4T\nzSs4UtfJ2hfWpTavY27XBoBcPdLSqlUr3XnnnapataqaNWumefPmSZLefvvti64/aNAgJScnex97\n9uy5mu0CAIBclOvXtJwvX758qlq1qrZu3XrR5eHh4QoPD7/KXQEAgLwg169pOV9aWpp++OEHlShR\nIrdbAQAAeUyuhpb+/fvrq6++0o4dO/Ttt9/qrrvuUkpKirp3756bbQEAgDwoV08P7d27V507d9aR\nI0dUpEgR3Xjjjfrmm2+UmJiYm20BAIA8KFdDy/Tp03Pz6QEAgIvkqWtaAAAALoXQAgAAXIHQAgAA\nXIHQAgAAXIHQAgAAXIHQAgAAXIHQAgAAXIHQAgAAXIHQAgAAXIHQAgAAXIHQAgAAXIHQAgAAXIHQ\nAgAAXIHQAgAAXIHQAgAAXIHQAgAAXIHQAgAAXIHQAgAAXIHQAgAAXIHQAgAAXCEktxsAgN/z6oIf\nc6zWE80r5FgtAFcXR1oAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArME4L\ngD+1nBoD5mLjv1CbMXGQswgtAICrgkECcaU4PQQAAFyBIy0AANdz6+kyTsX5h9ACAMAfzB/1VByn\nhwAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAA\ngCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQ\nWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCsQWgAAgCvkmdAyatQoeTwe\nPf7447ndCgAAyIPyRGhZtWqVJk6cqGrVquV2KwAAII/K9dCSmpqqe++9V2+++aYKFiyY2+0AAIA8\nKtdDy6OPPqrbbrtNzZo1+91109LSlJKS4vMAAAB/DiG5+eTTp0/XmjVrtHr16mytP2rUKI0YMcLh\nrgAAQF6Ua0da9uzZo759+2rq1KmKiIjI1s8MGjRIycnJ3seePXsc7hIAAOQVuXakZc2aNTp06JBq\n1arlnXf27FktXbpUY8eOVVpamoKDg31+Jjw8XOHh4Ve7VQAAkAfkWmhp2rSpNmzY4DOvZ8+eqlix\nogYOHJglsAAAgD+3XAstMTExqlKlis+8fPnyKS4uLst8AACAXL97CAAAIDty9e6hCy1ZsiS3WwAA\nAHkUR1oAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIAr\nEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoA\nAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIAr\nEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoA\nAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIArEFoAAIAr\nEFoAAIArhPj7A//5z38uOt/j8SgiIkLlypVTUlLSFTcGAABwPr9DS/v27eXxeGRmPvMz53k8HjVo\n0ECzZ89WwYIFc6xRAADw5+b36aEFCxaoTp06WrBggZKTk5WcnKwFCxbohhtu0Ny5c7V06VIdPXpU\n/fv3d6JfAADwJ+X3kZa+fftq4sSJql+/vnde06ZNFRERoQcffFCbNm3S6NGjdd999+VoowAA4M/N\n7yMt27ZtU2xsbJb5sbGx2r59uySpfPnyOnLkyJV3BwAA8H/8Di21atXSk08+qcOHD3vnHT58WAMG\nDFCdOnUkSVu3blV8fHzOdQkAAP70/D499NZbb6ldu3aKj49XQkKCPB6Pdu/erbJly+qTTz6RJKWm\npmrIkCE53iwAAPjz8ju0XHvttfrhhx/0+eef68cff5SZqWLFimrevLmCgs4duGnfvn2ONwoAAP7c\n/A4t0rnbm1u2bKmWLVvmdD8AAAAXFVBoWbhwoRYuXKhDhw4pIyPDZ9mkSZNypDEAAIDz+R1aRowY\noWeffVa1a9dWiRIl5PF4nOgLAADAh9+hZcKECZoyZYq6du16xU8+fvx4jR8/Xjt37pQkVa5cWUOH\nDlWrVq2uuDYAAPhj8fuW59OnT/sMLHcl4uPj9cILL2j16tVavXq1mjRponbt2mnTpk05Uh8AAPxx\n+B1aevXqpffffz9HnrxNmzZq3bq1KlSooAoVKmjkyJGKjo7WN998kyP1AQDAH4ffp4dOnTqliRMn\n6ssvv1S1atUUGhrqs/yf//xnQI2cPXtWH374oY4fP6569epddJ20tDSlpaV5p1NSUgJ6LgAA4D5+\n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\nUVGqXbt2TvYCAABwSdkOLffdd1+21ps0aVLAzQAAAFxKtkPLlClTlJiYqJo1a/JtzgAA4KrLdmjp\n3bu3pk+fru3bt+u+++5Tly5dVKhQISd7AwAA8Mr2Lc/jxo3T/v37NXDgQM2ZM0cJCQm6++679fnn\nn3PkBQAAOM6vcVrCw8PVuXNnLViwQJs3b1blypX1yCOPKDExUampqU71CAAAENi3PEuSx+ORx+OR\nmSkjIyMnewIAAMjCr9CSlpamadOmqXnz5rr22mu1YcMGjR07Vrt37w5onJZRo0apTp06iomJUdGi\nRdW+fXtt2bLF7zoAAOCPL9uh5ZFHHlGJEiX04osv6vbbb9fevXv14YcfqnXr1goKCuyAzVdffaVH\nH31U33zzjRYsWKD09HS1aNFCx48fD6geAAD448r23UMTJkxQ6dKllZSUpK+++kpfffXVRdebOXNm\ntp98/vz5PtOTJ09W0aJFtWbNmot+k3RaWprS0tK80ykpKdl+LgAA4G7ZDi3dunWTx+NxshclJydL\n0iVvpR41apRGjBjhaA8AACBv8mtwOSeZmfr166cGDRqoSpUqF11n0KBB6tevn3c6JSVFCQkJjvYF\nAADyhoC/eyin9enTR+vXr9fy5csvuU54eLjCw8OvYlcAACCvyBOh5a9//av+85//aOnSpYqPj8/t\ndgAAQB6Uq6HFzPTXv/5Vs2bN0pIlS5SUlJSb7QAAgDwsV0PLo48+qvfff1+ffPKJYmJidODAAUlS\n/vz5FRkZmZutAQCAPCbgEXFzwvjx45WcnKzGjRurRIkS3seMGTNysy0AAJAH5frpIQAAgOzI1SMt\nAAAA2UVoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAA\nrkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBo\nAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAA\nrkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBo\nAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAA\nrkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBoAQAArkBo\nAQAArkBoAQAArpCroWXp0qVq06aNSpYsKY/Ho9mzZ+dmOwAAIA/L1dBy/PhxVa9eXWPHjs3NNgAA\ngAuE5OaTt2rVSq1atcrNFgA1xzH5AAAgAElEQVQAgEvkamjxV1pamtLS0rzTKSkpudgNAAC4mlx1\nIe6oUaOUP39+7yMhISG3WwIAAFeJq0LLoEGDlJyc7H3s2bMnt1sCAABXiatOD4WHhys8PDy32wAA\nALnAVUdaAADAn1euHmlJTU3VTz/95J3esWOH1q1bp0KFCql06dK52BkAAMhrcjW0rF69Wrfccot3\nul+/fpKk7t27a8qUKbnUFQAAyItyNbQ0btxYZpabLQAAAJfgmhYAAOAKhBYAAOAKhBYAAOAKhBYA\nAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAK\nhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYA\nAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAK\nhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYA\nAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAK\nhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKeSK0jBs3TklJ\nSYqIiFCtWrW0bNmy3G4JAADkMbkeWmbMmKHHH39cTz/9tNauXaubb75ZrVq10u7du3O7NQAAkIfk\nemj55z//qfvvv1+9evXSddddp9GjRyshIUHjx4/P7dYAAEAeEpKbT3769GmtWbNGTz31lM/8Fi1a\n6Ouvv86yflpamtLS0rzTycnJkqSUlBRH+jt1PDVH6lzYX07VdbL2xbYptXkdc6s22/qPUZvX8Y+x\nrXOyppn594OWi37++WeTZP/973995o8cOdIqVKiQZf1hw4aZJB48ePDgwYPHH+CxZ88ev3JDrh5p\nyeTxeHymzSzLPEkaNGiQ+vXr553OyMjQL7/8ori4uIuu77SUlBQlJCRoz549io2NdUVtN/bs1tpu\n7JnaV68uta9eXWpfvbrZZWY6duyYSpYs6dfP5WpoKVy4sIKDg3XgwAGf+YcOHVKxYsWyrB8eHq7w\n8HCfeQUKFHC0x+yIjY117EV3qrYbe3ZrbTf2TO2rV5faV68uta9e3ezInz+/3z+TqxfihoWFqVat\nWlqwYIHP/AULFqh+/fq51BUAAMiLcv30UL9+/dS1a1fVrl1b9erV08SJE7V792717t07t1sDAAB5\nSPDw4cOH52YDVapUUVxcnJ5//nm98sorOnnypN59911Vr149N9vKtuDgYDVu3FghITmf/5yq7cae\n3VrbjT1T++rVpfbVq0vtq1fXSR4zf+83AgAAuPpyfXA5AACA7CC0AAAAVyC0AAAAVyC0AAAAVyC0\nAAAAV3DPfU55xJ49e7Rz506dOHFCRYoUUeXKlbOM0huItLQ0rVy50qd2zZo1lZSUlCfrXg1nzpzR\ngQMHvH0XKlQot1v6w0tLS8uR9/PVqu3Ue2Tnzp1atmxZlv2mXr16ioiIyHN1M7HPXD1mpiNHjujE\niRMqXLiw8uXLl9st/SkQWrJh165dmjBhgqZNm6Y9e/b4fCtlWFiYbr75Zj344IO68847FRTk38Gr\nr7/+Wq+//rpmz56t06dPq0CBAoqMjNQvv/yitLQ0lS1bVg8++KB69+6tmJiYXK+bKTk5WbNmzbro\nB/Ctt94a8IjGqampmjp1qqZNm6aVK1f6fKt3fHy8WrRooQcffFB16tQJqP6WLVs0bdq0S/Z95513\nOvZL+0qYmb766quL9t2sWTMlJCQEVPfzzz/3bo/du3crIyNDUVFRuv7669WiRQv17NnT7+8Gcbq2\nk++R999/X6+99ppWrlypokWLqlSpUt79Ztu2bYqIiNC9996rgQMHKjExMdfrSu7dZ5z6DHGy/qlT\npzRjxgxNmzZNX3/9tY4fP+5dVq5cObVo0UIPPPCAqlWrlmd6zuTWz74LMU7L7+jbt68mT56sFi1a\nqG3btrrhhht8PnA2btyoZcuWadq0aQoJCdHkyZOz/eHQrl07rVq1Svfcc4/atm2r2rVrKyoqyrt8\n+/bt3trff/+93nnnHTVv3jzX6krS/v37NXToUE2dOlXFixe/6PZYs2aNEhMTNWzYMHXq1ClbdSXp\n1Vdf1ciRI1WmTJnLbutZs2bpxhtv1Ouvv67y5ctnq/batWs1YMAALVu2TPXr179k7ZSUFA0YMECP\nP/54ntiBT548qVdffVXjxo3T0aNHVb169Sx979u3Ty1atNDQoUN14403Zqvu7NmzNXDgQCUnJ6t1\n69aX3B4rVqxQjx499Pe//11FihTJ9dpOvkeuv/56BQUFqUePHmrbtq1Kly7tszwtLU0rVqzQ9OnT\n9fHHH2vcuHHq2LFjrtV1ens4tc84+RniZP3x48drxIgRKly48GW39Zw5c9SsWTO9+uqr2T6i7eQ2\ncetn3yX59Z3Qf0L9+/e3Q4cOZWvdefPm2Ycffpjt2mPHjrW0tLRsrbtx40b74osvcrWumVmRIkXs\nb3/7m23YsOGS65w4ccLef/99u+GGG+zll1/Odu277rrL1q9f/7vrnTp1yv71r3/Zm2++me3apUuX\nttdff92OHj162fW+/vpr69ixo40cOTLbtZ0UHx9vd955p82ZM8dOnz590XV27txpzz//vJUuXdom\nTpyYrbp16tSx//znP3b27NnLrrd371578skn7ZVXXsl2z07WdvI9Mnfu3Gyve/jwYVu5cmWu1jVz\n5z7j5GeIk/Vvv/32bL02x44ds3/84x82fvz4XO/ZzL2ffZfCkRb45fDhw9n+qziQ9Z1y+vRphYWF\nObZ+ppy+pmDjxo2qUqVKttY9ffq0du3ale2/pIHLcWqfcfozxI2fUU72fLU++64WQksedfDgQaWl\npWU5lHwltm7dqt27dysxMVHlypXLsbp/dk5fU/BHsmPHDiUkJLjmu07S09O1ePFi735zyy23KDg4\nOMfq9+zZUyNHjgz4uqHLSU9Pd812BrKLW56zISYmRvfff7++/vrrHK997NgxdenSRYmJierevbtO\nnz6tRx99VCVKlFBSUpIaNWqklJQUv+u+8MILWrRokSTp119/VbNmzXTttdeqefPmuvbaa9WqVSv9\n9ttvOfpvKVu2rLZu3XrFdb7//nt169ZNZcuWVWRkpKKjo1W1alUNGTIkoG1xKWfOnNHs2bP18ssv\n67333vO5qC67Xn31VZUpU0ZvvvmmmjRpopkzZ2rdunXasmWLVqxYoWHDhik9PV3NmzdXy5YtA9o+\nH3/8sU6cOOH3z/2etWvXaseOHd7p9957TzfddJMSEhLUoEEDTZ8+Pcef89prr73i98jp06d9prdt\n26bHH39ct912m3r16qU1a9YEXPuxxx7TvHnzJEl79+5V1apV1apVKz399NNq2bKlatasqZ9//tnv\nuuvXr7/oY+rUqVq5cqV3OhDz58/Xhg0bJEkZGRl67rnnVKpUKYWHhys+Pl4vvPCCruRv0zlz5mjY\nsGFasWKFJGnRokVq3bq1WrZsqYkTJwZc90Lr1q3Thx9+qOXLl19Rv5mOHj2qxYsX65dffpEkHTly\nRC+++KKeffZZ/fDDDwHXfe+99/TQQw9p2rRpkqRZs2apZs2aqlSpkkaNGnXFfe/du1epqalZ5p85\nc0ZLly4NuOaRI0e808uWLdO9996rm2++WV26dPG+tq6Qm+em3MLj8VjlypXN4/FYxYoV7ZVXXrGD\nBw/mSO0+ffpYxYoV7bXXXrPGjRtbu3btrEqVKrZ8+XJbunSpValSxQYPHux33dKlS9v3339vZma9\nevWymjVr2nfffWcnT560devW2Y033mj3339/QD2PGTPmoo/g4GAbNGiQdzoQ8+fPt8jISGvfvr11\n7tzZoqKirE+fPjZw4EArV66cXXPNNbZ///6AaterV89+/fVXMzM7dOiQVa1a1cLCwqx8+fIWERFh\npUuXtr179/pV08lrCjJ5PB6LiYmxBx54wL755hu/f/5SatasaYsWLTIzszfffNMiIyPtscces/Hj\nx9vjjz9u0dHR9tZbbwVU+4477rjoIygoyJo1a+adDkRQUJB3/1u7dq1FRUVZjRo17IEHHrA6depY\nWFiYffvttwHVLlGihG3evNnMzO6++25r1qyZHT582MzMjh49arfffrvdddddftf1eDwWFBRkHo8n\nyyNzflBQUEA9V6pUyf773/+amdnzzz9vcXFx9s9//tM+++wzGz16tBUrVsxeeOGFgGqPHz/eQkJC\nrFatWhYbG2vvvfeexcTEWK9eveyhhx6yyMhIGz16tN91O3fubCkpKWZ27hqQFi1amMfjsbCwMPN4\nPFa7dm3vvhqIb7/91vLnz28ej8cKFixoq1evtqSkJCtfvryVK1fOIiMjbc2aNX7XHTt2rEVGRlrr\n1q2tSJEi9vLLL1vBggXtmWeescGDB1t0dLRNmjQpoJ737dtnderUsaCgIAsODrZu3brZsWPHvMsP\nHDgQ8HukXr169umnn5qZ2ezZsy0oKMjatm1rAwcOtDvuuMNCQ0Ntzpw5AdW+2ggt2eDxeOzgwYO2\n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\n/uabb3pPuwTKiQEZnfzMvtoILdn0/fff2+DBg+1vf/tbwN/1cin79u2ziRMn2uuvv37Fb87zOdXz\nsWPH7O6777aQkBDzeDxWv35975fMmZ0bkfTCgduya8uWLT61LjR16tTLjkh5OU717eQ1BWbn7jy5\n8cYbvb+sy5Qp4/P9MgvwK3wAACAASURBVB9++KG99tprftd1ciA/M7Nx48ZZ/fr1rVatWjZ48GA7\nefKkd9mPP/7oc9rPH0uWLPF5nP9dXWZmo0ePtpdeeingvp3aH48fP26ff/65zZkzJ0dPH5o5t62d\n2mecek873beZ2axZs6xDhw5222232Wuvvea9LsfMbP/+/Vc80nimnByQ0cntcbUxTgsCdurUKaWn\npwd0uDw35XTfUVFR2rx5s8/3/4SGhmrXrl0qWbKkVq5cqVtvvfWKD/du3bpVaWlpqlixImM24Kpy\nal93+j3t1s+oTDk9IKPbt4ck8cnnB6cGgJOyDjqVlJSktm3bXvGgU0727O/Isf5wclC8nO4785qC\nzNCS09dvZMqpAcguxslByXbv3u19HcuUKZOj9Z2q7cT+ePLkSU2bNi1L3fbt26tp06Y50rdT28Op\nfd3J97TkXN9paWn6/vvvfV7HypUr51j98/fH6tWr51hdJz+zr5rcPtTjBk4NOGXm3KBTTvZs5tyg\nZE4O5OdU305eU5DJqYGhnByU7F//+pf3S97Of9x0000+txXnpdpO7Y9Oj0vi5LZ2al93erAzp/oe\nMmSIxcbGZtnW5cuXD3jsq0xO7o9ODiR5NRFassGpAafMnBt0ysmenRyUzMlB8Zzs26lrCsycGxjK\nyQuIX375ZStRooSNHj3aJkyYYNddd509++yz9tlnn1nXrl0tKioq4C9kdLK2U/ujk+OSOLk9nNpn\nnB7szKm+n3nmGStfvrxNnz7dZs+ebTfeeKONGjXK1q5da08++aSFh4fbokWLAurZyf3Ryc++q43Q\nkg1ODThl5tygU0727OSgZE4Oiudk305yamAoJy8gLlOmjH366afe6S1btlhcXJz3aMJjjz1mzZs3\nz3O1ndofnRyXxMnt4dQ+4/RgZ071XapUKVu8eLF3evfu3RYTE+P9apEhQ4ZYgwYNAurZyf3RrZ99\nF0NoyQanBpwyc27QKSd7dnJQMicHxXOy70y7du2yb775xlatWpVjd4g4NTCUk4OSXTgIV0ZGhs8g\n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\nZQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bcd3fe27b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 前二十大高分电影\n",
    "popular_items_count_top_20 = df_items_sorted_by_mean_rating_merge.iloc[0:20]['mean_rating']\n",
    "popular_items_top_20_titles =  df_items_sorted_by_mean_rating_merge.iloc[0:20]['title']\n",
    "\n",
    "objects = (list(popular_items_top_20_titles))#注意此处的转换\n",
    "y_pos = np.arange(len(objects))\n",
    "performance = list(popular_items_count_top_20)\n",
    " \n",
    "plt.rcdefaults()    \n",
    "plt.bar(y_pos, performance, align='center', alpha=0.5)\n",
    "plt.xticks(y_pos, objects, rotation='vertical')#X刻标，刻度标签\n",
    "plt.ylabel('Mean Rating')\n",
    "plt.title('Most popular Movies')\n",
    " \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_id</th>\n",
       "      <th>mean_rating</th>\n",
       "      <th>rating_times</th>\n",
       "      <th>title</th>\n",
       "      <th>release_date</th>\n",
       "      <th>video_release_date</th>\n",
       "      <th>imdb_url</th>\n",
       "      <th>unknown</th>\n",
       "      <th>Action</th>\n",
       "      <th>Adventure</th>\n",
       "      <th>...</th>\n",
       "      <th>Horror</th>\n",
       "      <th>Musical</th>\n",
       "      <th>Mystery</th>\n",
       "      <th>Romance</th>\n",
       "      <th>Sci-Fi</th>\n",
       "      <th>Thriller</th>\n",
       "      <th>War</th>\n",
       "      <th>Western</th>\n",
       "      <th>ranking_rating_times</th>\n",
       "      <th>ranking_mean_rate</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>408</td>\n",
       "      <td>4.491071</td>\n",
       "      <td>112</td>\n",
       "      <td>Close Shave, A (1995)</td>\n",
       "      <td>28-Apr-1996</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Close%20Shave...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>305</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>318</td>\n",
       "      <td>4.466443</td>\n",
       "      <td>298</td>\n",
       "      <td>Schindler's List (1993)</td>\n",
       "      <td>01-Jan-1993</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Schindler's%2...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>34</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>169</td>\n",
       "      <td>4.466102</td>\n",
       "      <td>118</td>\n",
       "      <td>Wrong Trousers, The (1993)</td>\n",
       "      <td>01-Jan-1993</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Wrong%20Trous...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>286</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>483</td>\n",
       "      <td>4.456790</td>\n",
       "      <td>243</td>\n",
       "      <td>Casablanca (1942)</td>\n",
       "      <td>01-Jan-1942</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Casablanca%20...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>74</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>114</td>\n",
       "      <td>4.447761</td>\n",
       "      <td>67</td>\n",
       "      <td>Wallace &amp; Gromit: The Best of Aardman Animatio...</td>\n",
       "      <td>05-Apr-1996</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/Title?Wallace+%26+Gromit%3A...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>483</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>64</td>\n",
       "      <td>4.445230</td>\n",
       "      <td>283</td>\n",
       "      <td>Shawshank Redemption, The (1994)</td>\n",
       "      <td>01-Jan-1994</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Shawshank%20R...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>46</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>603</td>\n",
       "      <td>4.387560</td>\n",
       "      <td>209</td>\n",
       "      <td>Rear Window (1954)</td>\n",
       "      <td>01-Jan-1954</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Rear%20Window...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>106</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>12</td>\n",
       "      <td>4.385768</td>\n",
       "      <td>267</td>\n",
       "      <td>Usual Suspects, The (1995)</td>\n",
       "      <td>14-Aug-1995</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Usual%20Suspe...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>55</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>50</td>\n",
       "      <td>4.358491</td>\n",
       "      <td>583</td>\n",
       "      <td>Star Wars (1977)</td>\n",
       "      <td>01-Jan-1977</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Star%20Wars%2...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>178</td>\n",
       "      <td>4.344000</td>\n",
       "      <td>125</td>\n",
       "      <td>12 Angry Men (1957)</td>\n",
       "      <td>01-Jan-1957</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?12%20Angry%20...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>263</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>10 rows × 28 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    item_id  mean_rating  rating_times  \\\n",
       "15      408     4.491071           112   \n",
       "16      318     4.466443           298   \n",
       "17      169     4.466102           118   \n",
       "18      483     4.456790           243   \n",
       "19      114     4.447761            67   \n",
       "20       64     4.445230           283   \n",
       "21      603     4.387560           209   \n",
       "22       12     4.385768           267   \n",
       "23       50     4.358491           583   \n",
       "24      178     4.344000           125   \n",
       "\n",
       "                                                title release_date  \\\n",
       "15                              Close Shave, A (1995)  28-Apr-1996   \n",
       "16                            Schindler's List (1993)  01-Jan-1993   \n",
       "17                         Wrong Trousers, The (1993)  01-Jan-1993   \n",
       "18                                  Casablanca (1942)  01-Jan-1942   \n",
       "19  Wallace & Gromit: The Best of Aardman Animatio...  05-Apr-1996   \n",
       "20                   Shawshank Redemption, The (1994)  01-Jan-1994   \n",
       "21                                 Rear Window (1954)  01-Jan-1954   \n",
       "22                         Usual Suspects, The (1995)  14-Aug-1995   \n",
       "23                                   Star Wars (1977)  01-Jan-1977   \n",
       "24                                12 Angry Men (1957)  01-Jan-1957   \n",
       "\n",
       "    video_release_date                                           imdb_url  \\\n",
       "15                 NaN  http://us.imdb.com/M/title-exact?Close%20Shave...   \n",
       "16                 NaN  http://us.imdb.com/M/title-exact?Schindler's%2...   \n",
       "17                 NaN  http://us.imdb.com/M/title-exact?Wrong%20Trous...   \n",
       "18                 NaN  http://us.imdb.com/M/title-exact?Casablanca%20...   \n",
       "19                 NaN  http://us.imdb.com/Title?Wallace+%26+Gromit%3A...   \n",
       "20                 NaN  http://us.imdb.com/M/title-exact?Shawshank%20R...   \n",
       "21                 NaN  http://us.imdb.com/M/title-exact?Rear%20Window...   \n",
       "22                 NaN  http://us.imdb.com/M/title-exact?Usual%20Suspe...   \n",
       "23                 NaN  http://us.imdb.com/M/title-exact?Star%20Wars%2...   \n",
       "24                 NaN  http://us.imdb.com/M/title-exact?12%20Angry%20...   \n",
       "\n",
       "    unknown  Action  Adventure        ...          Horror  Musical  Mystery  \\\n",
       "15        0       0          0        ...               0        0        0   \n",
       "16        0       0          0        ...               0        0        0   \n",
       "17        0       0          0        ...               0        0        0   \n",
       "18        0       0          0        ...               0        0        0   \n",
       "19        0       0          0        ...               0        0        0   \n",
       "20        0       0          0        ...               0        0        0   \n",
       "21        0       0          0        ...               0        0        1   \n",
       "22        0       0          0        ...               0        0        0   \n",
       "23        0       1          1        ...               0        0        0   \n",
       "24        0       0          0        ...               0        0        0   \n",
       "\n",
       "    Romance  Sci-Fi  Thriller  War  Western  ranking_rating_times  \\\n",
       "15        0       0         1    0        0                   305   \n",
       "16        0       0         0    1        0                    34   \n",
       "17        0       0         0    0        0                   286   \n",
       "18        1       0         0    1        0                    74   \n",
       "19        0       0         0    0        0                   483   \n",
       "20        0       0         0    0        0                    46   \n",
       "21        0       0         1    0        0                   106   \n",
       "22        0       0         1    0        0                    55   \n",
       "23        1       1         0    1        0                     0   \n",
       "24        0       0         0    0        0                   263   \n",
       "\n",
       "    ranking_mean_rate  \n",
       "15                 15  \n",
       "16                 16  \n",
       "17                 17  \n",
       "18                 18  \n",
       "19                 19  \n",
       "20                 20  \n",
       "21                 21  \n",
       "22                 22  \n",
       "23                 23  \n",
       "24                 24  \n",
       "\n",
       "[10 rows x 28 columns]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#去掉评分次数<20次的电影\n",
    "df_items_sorted_by_mean_rating_merge2 = df_items_sorted_by_mean_rating_merge[df_items_sorted_by_mean_rating_merge.rating_times>20]\n",
    "df_items_sorted_by_mean_rating_merge2.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAAM3CAYAAADx02A7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xd4FPX6/vF7Nz0EAoROQgigIh0B\nlY4gICBFETkgVSxYjigKWEE5AnYFOYJ4KBaKhaKgUg5F4IA0KVJsFAPSUakSSp7fH3yzP5YEzC4Z\nltH367r20il59mF2ZnNnduazHjMzAQAAXOa8oW4AAAAgOwgtAADAFQgtAADAFQgtAADAFQgtAADA\nFQgtAADAFQgtAADAFQgtAADAFQgtAADAFQgtQA4ZN26cPB6PPB6PFixYkGm5malMmTLyeDxq0KCB\nIz3s3LlTzz77rNasWeNI/VDJ2Lbbtm1z/LkWLFjgex3HjRuX5ToNGzaUx+NRyZIlHe2lZMmS6tat\nm6PPAbgJoQXIYblz59bo0aMzzf/qq6+0efNm5c6d27Hn3rlzp5577rm/XGgJhfO9jlu3btWCBQuU\nJ08ex3uYOnWqnnnmGcefB3ALQguQw9q3b6/Jkyfr0KFDfvNHjx6tmjVrqkSJEiHqDBmOHTv2p+u0\nb99eixcv1o8//ug3f8yYMSpevLhq167tVHs+VatWVenSpR1/HsAtCC1ADuvQoYMkaeLEib55Bw8e\n1OTJk3XnnXdm+TO//vqr7r//fhUvXlyRkZEqVaqUnnrqKaWlpfmt9/HHH+u6665TfHy8YmNjVapU\nKV/NBQsWqEaNGpKk7t27+z7iePbZZ8/ba8bHLnPmzFH37t2VP39+5cqVSy1bttSWLVsyrT9mzBhV\nrlxZ0dHRyp8/v2655RZt2rTJb51u3bopLi5OGzZsUKNGjZQrVy4VLFhQDz74oF9Y2LZt23k/gvmz\nviVpzpw5at26tRITExUdHa0yZcro3nvv1f79+/3We/bZZ+XxePTNN9/otttuU758+bIVBBo3bqyk\npCSNGTPGNy89PV3vvvuuunbtKq8389vn8ePH9cQTTyglJUWRkZEqXry4HnjgAf3+++++ddq0aaPk\n5GSlp6dn+vnrrrtO11xzjW86q4+HDh06pMcee8zvOR5++GEdPXrUb70L7SuAWxFagByWJ08e3Xbb\nbX6/7CZOnCiv16v27dtnWv/48eO64YYb9N5776l37976/PPP1alTJ7300ku69dZbfestXbpU7du3\nV6lSpTRp0iR9/vnn6t+/v06dOiVJuuaaazR27FhJ0tNPP62lS5dq6dKluuuuu/605x49esjr9WrC\nhAl64403tHz5cjVo0MDvl+2QIUPUo0cPlS9fXlOmTNHQoUO1bt061axZM9PZiJMnT6p58+Zq1KiR\npk2bpgcffFBvv/12lv/+YG3evFk1a9bUiBEjNHv2bPXv31/Lli1TnTp1dPLkyUzr33rrrSpTpow+\n/vhjjRw58k/re71edevWTe+9955Onz4tSZo9e7Z27Nih7t27Z1rfzNSmTRu98sor6ty5sz7//HP1\n7t1b7777rho2bOgLoHfeeadSU1M1b948v5//7rvvtHz58ixrZzh27Jjq16+vd999Vw899JC+/PJL\n9evXT+PGjVOrVq1kZpL+fF8BXMsA5IixY8eaJFuxYoXNnz/fJNn69evNzKxGjRrWrVs3MzMrX768\n1a9f3/dzI0eONEn20Ucf+dV78cUXTZLNnj3bzMxeeeUVk2S///77eXtYsWKFSbKxY8cG1PMtt9zi\nN/9///ufSbLnn3/ezMx+++03i4mJsebNm/utl5qaalFRUdaxY0ffvK5du5okGzp0qN+6gwYNMkm2\nePFiMzPbunXreXuVZAMGDMjU59atW7P8d6Snp9vJkyft559/Nkn26aef+pYNGDDAJFn//v3/dHuY\nme+1+/jjj23Lli3m8XhsxowZZmbWrl07a9CggZmZtWjRwpKTk30/N3PmTJNkL730kl+9Dz/80CTZ\nqFGjzMzs5MmTVrhwYb9tZmbWt29fi4yMtP379/vmJScnW9euXX3TQ4YMMa/XaytWrPD72U8++cQk\n2RdffGFm2dtXADfiTAvggPr166t06dIaM2aMvv32W61YseK8p+bnzZunXLly6bbbbvObn/GxwNy5\ncyXJ99HP7bffro8++ki//PJLjvV7xx13+E3XqlVLycnJmj9/vqQzf7n/8ccfmT6qSEpKUsOGDX09\nXqhmx44dJclX82Lt3btXPXv2VFJSksLDwxUREaHk5GRJyvSRlSS1bds24OdISUlRgwYNNGbMGB04\ncECffvrpBV9HSZm2Ubt27ZQrVy7fNgoPD1enTp00ZcoUHTx4UJJ0+vRpvf/++2rdurUSEhLO28+M\nGTNUoUIFValSRadOnfI9mjZt6nfXmpP7ChBKhBbAAR6PR927d9cHH3ygkSNH6sorr1TdunWzXPfA\ngQMqUqSIPB6P3/xChQopPDxcBw4ckCTVq1dP06ZN06lTp9SlSxclJiaqQoUKftfOBKtIkSJZzst4\n7oz/Fi1aNNN6xYoV8y3PEB4enumXb8ZznLtuMNLT09WkSRNNmTJFffv21dy5c7V8+XJ9/fXXkqQ/\n/vgj089k1Xt29OjRQ9OnT9drr72mmJiYTOEyw4EDBxQeHq6CBQv6zfd4PH7bUjrzEdHx48c1adIk\nSdKsWbO0a9euC340JEl79uzRunXrFBER4ffInTu3zMx3PY+T+woQSoQWwCHdunXT/v37NXLkyAv+\nMkpISNCePXt81yNk2Lt3r06dOqUCBQr45rVu3Vpz587VwYMHtWDBAiUmJqpjx45aunTpRfW6e/fu\nLOdlBI+M/+7atSvTejt37vTrUZJOnTqVKZxkPEdGrejoaEnKdLFxdkLN+vXrtXbtWr388sv65z//\nqQYNGqhGjRoXPEtxbijMrltvvVWxsbF64YUX9I9//EMxMTFZrpeQkKBTp05p3759fvPNTLt37/bb\nRuXKldO1117ruwZp7NixKlasmJo0aXLBXgoUKKCKFStqxYoVWT7Ovj3aqX0FCCVCC+CQ4sWLq0+f\nPmrZsqW6du163vUaNWqkI0eOaNq0aX7z33vvPd/yc0VFRal+/fp68cUXJUmrV6/2zZeyPtNwIePH\nj/ebXrJkiX7++WffIHg1a9ZUTEyMPvjgA7/1duzYoXnz5mXZ47k1J0yYIEm+moULF1Z0dLTWrVvn\nt96nn376p/1mBJCMf2+Gt99++09/NlAxMTHq37+/WrZsqfvuu++862Vsg3O30eTJk3X06NFM26h7\n9+5atmyZFi9erOnTp6tr164KCwu7YC8333yzNm/erISEBFWvXj3TI6vB7s63rwBuFB7qBoC/shde\neOFP1+nSpYv+/e9/q2vXrtq2bZsqVqyoxYsXa/DgwWrevLluvPFGSVL//v21Y8cONWrUSImJifr9\n9981dOhQRUREqH79+pKk0qVLKyYmRuPHj9fVV1+tuLg4FStWTMWKFbtgDytXrtRdd92ldu3aafv2\n7XrqqadUvHhx3X///ZKkvHnz6plnntGTTz6pLl26qEOHDjpw4ICee+45RUdHa8CAAX71IiMj9eqr\nr+rIkSOqUaOGlixZoueff17NmjVTnTp1JJ0JHp06ddKYMWNUunRpVa5cWcuXL/eFmwspW7asSpcu\nrccff1xmpvz582v69OmaM2fOn/5sMHr37q3evXtfcJ3GjRuradOm6tevnw4dOqTatWtr3bp1GjBg\ngKpWrarOnTv7rd+hQwf17t1bHTp0UFpaWrZGvn344Yc1efJk1atXT4888ogqVaqk9PR0paamavbs\n2Xr00Ud13XXXZWtfAVwptNcBA38dZ989dCHn3j1kZnbgwAHr2bOnFS1a1MLDwy05OdmeeOIJO378\nuG+dGTNmWLNmzax48eIWGRlphQoVsubNm9uiRYv8ak2cONHKli1rERERme7COV/Ps2fPts6dO1ve\nvHl9dwn9+OOPmdb/z3/+Y5UqVbLIyEiLj4+31q1b24YNG/zW6dq1q+XKlcvWrVtnDRo0sJiYGMuf\nP7/dd999duTIEb91Dx48aHfddZcVLlzYcuXKZS1btrRt27Zl6+6hjRs3WuPGjS137tyWL18+a9eu\nnaWmpmb62Yy7h/bt23fe7XC2s+8eupBz7x4yM/vjjz+sX79+lpycbBEREVa0aFG777777Lfffsuy\nRseOHU2S1a5dO8vl5949ZGZ25MgRe/rpp+2qq67yvQ4VK1a0Rx55xHbv3m1m2d9XALfxmJ3zQTqA\nv41x48ape/fuWrFihapXr54jNbt166ZPPvlER44cyZF6AJCBa1oAAIArEFoAAIAr8PEQAABwBc60\nAAAAVyC0AAAAVyC0AAAAV3D14HLp6enauXOncufOHfQQ3QAA4NIyMx0+fFjFihWT15v98yeuDi07\nd+5UUlJSqNsAAABB2L59uxITE7O9vqtDS+7cuSWd+UfnyZMnxN0AAIDsOHTokJKSkny/x7PL1aEl\n4yOhPHnyEFoAAHCZQC/t4EJcAADgCoQWAADgCoQWAADgCoQWAADgCoQWAADgCoQWAADgCoQWAADg\nCoQWAADgCoQWAADgCoQWAADgCoQWAADgCoQWAADgCoQWAADgCoQWAADgCuGhbuBy9vqcH3KkziON\nr8yROgAA/J1xpgUAALgCZ1pCIKfO4EiZz+JwdggA8FdFaEG2EYgAAKFEaMFlwclARNgCgL8GrmkB\nAACuQGgBAACuQGgBAACuwDUtQJC4CwwALi3OtAAAAFcgtAAAAFfg4yHgb4aPngC4FaEFQI4hEAFw\nEqEFwGXPyYueAbgH17QAAABXILQAAABX4OMhAH9rbv3eKzfWduvYRlyrdfngTAsAAHAFzrQAABAi\nbjyrFUqcaQEAAK5AaAEAAK5AaAEAAK5AaAEAAK5AaAEAAK5AaAEAAK5AaAEAAK5AaAEAAK5AaAEA\nAK5AaAEAAK5AaAEAAK5AaAEAAK5AaAEAAK5AaAEAAK5AaAEAAK5AaAEAAK5w2YSWIUOGyOPx6OGH\nHw51KwAA4DJ0WYSWFStWaNSoUapUqVKoWwEAAJepkIeWI0eO6I477tA777yjfPnyhbodAABwmQp5\naHnggQfUokUL3XjjjX+6blpamg4dOuT3AAAAfw/hoXzySZMmadWqVVq5cmW21h8yZIiee+45h7sC\nAACXo5Cdadm+fbt69eql8ePHKzo6Ols/88QTT+jgwYO+x/bt2x3uEgAAXC5CdqZl1apV2rt3r6pV\nq+abd/r0aS1cuFDDhw9XWlqawsLC/H4mKipKUVFRl7pVAABwGQhZaGnUqJG+/fZbv3ndu3dX2bJl\n1a9fv0yBBQAA/L2FLLTkzp1bFSpU8JuXK1cuJSQkZJoPAAAQ8ruHAAAAsiOkdw+da8GCBaFuAQAA\nXKY40wIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB\n0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIA\nAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB\n0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIA\nAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB\n0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIA\nAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB0AIAAFyB\n0AIAAFwhpKFlxIgRqlSpkvLkyaM8efKoZs2a+vLLL0PZEgAAuEyFNLQkJibqhRde0MqVK7Vy5Uo1\n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\n2LFj1a1bt4uqDQAA/lqyHVruvPPObK03ZsyYbD85X7AIAACyK9uhZdy4cUpOTlbVqlUJGwAA4JLL\ndmjp2bOnJk2apC1btujOO+9Up06dzjsIHAAAQE7L9i3Pb731lnbt2qV+/fpp+vTpSkpK0u23365Z\ns2Zx5gUAADguoHFaoqKi1KFDB82ZM0cbN25U+fLldf/99ys5OVlHjhxxqkcAAIDgvuVZkjwejzwe\nj8xM6enpOdkTAABAJgGFlrS0NE2cOFGNGzfWVVddpW+//VbDhw9XampqUOO0AAAAZFe2L8S9//77\nNWnSJJUoUULdu3fXpEmTlJCQ4GRvAAAAPtkOLSNHjlSJEiWUkpKir776Sl999VWW602ZMiXHmgMA\nAMiQ7dDSpUsXeTweJ3sBAAA4r4AGlwMAAAiVoO8eAgAAuJQILQAAwBUILQAAwBUILQAAwBUILQAA\nwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUI\nLQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAA\nwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUI\nLQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAA\nwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBUI\nLQAAwBUILQAAwBUILQAAwBUILQAAwBUILQAAwBVCGloWLlyoli1bqlixYvJ4PJo2bVoo2wEAAJex\nkIaWo0ePqnLlyho+fHgo2wAAAC4QHsonb9asmZo1axbKFgAAgEuENLQEKi0tTWlpab7pQ4cOhbAb\nAABwKbnqQtwhQ4YoPj7e90hKSgp1SwAA4BJxVWh54okndPDgQd9j+/btoW4JAABcIq76eCgqKkpR\nUVGhbgMAAISAq860AACAv6+Qnmk5cuSIfvrpJ9/01q1btWbNGuXPn18lSpQIYWcAAOByE9LQsnLl\nSt1www2+6d69e0uSunbtqnHjxoWoKwAAcDkKaWhp0KCBzCyULQAAAJfgmhYAAOAKhBYAAOAKhBYA\nAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAK\nhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYA\nAOAKhBYAAOAKhBYAAOAKhBYQ/NoQAAAgAElEQVQAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAK\nhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYA\nAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAK\nhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYA\nAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAKhBYAAOAK\nl0Voeeutt5SSkqLo6GhVq1ZNixYtCnVLAADgMhPy0PLhhx/q4Ycf1lNPPaXVq1erbt26atasmVJT\nU0PdGgAAuIyEPLS89tpr6tGjh+666y5dffXVeuONN5SUlKQRI0aEujUAAHAZCQ/lk584cUKrVq3S\n448/7je/SZMmWrJkSab109LSlJaW5ps+ePCgJOnQoUOO9Hf86JEcqXNufzlV18naWW1TavM6hqo2\n2/qvUZvX8a+xrXOyppkF9oMWQr/88otJsv/9739+8wcNGmRXXnllpvUHDBhgknjw4MGDBw8ef4HH\n9u3bA8oNIT3TksHj8fhNm1mmeZL0xBNPqHfv3r7p9PR0/frrr0pISMhyfacdOnRISUlJ2r59u/Lk\nyeOK2m7s2a213dgztS9dXWpfurrUvnR1s8vMdPjwYRUrViygnwtpaClQoIDCwsK0e/duv/l79+5V\n4cKFM60fFRWlqKgov3l58+Z1tMfsyJMnj2MvulO13dizW2u7sWdqX7q61L50dal96epmR3x8fMA/\nE9ILcSMjI1WtWjXNmTPHb/6cOXNUq1atEHUFAAAuRyH/eKh3797q3Lmzqlevrpo1a2rUqFFKTU1V\nz549Q90aAAC4jIQ9++yzz4aygQoVKighIUGDBw/WK6+8oj/++EPvv/++KleuHMq2si0sLEwNGjRQ\neHjO5z+naruxZ7fWdmPP1L50dal96epS+9LVdZLHLND7jQAAAC69kA8uBwAAkB2EFgAA4AqEFgAA\n4AqEFgAA4AqEFgAA4Aruuc8JQTMz7d+/X8eOHVOBAgWUK1euULf0l7Vt2zYtWrRI27Zt07Fjx1Sw\nYEFVrVpVNWvWVHR0dNB109LStHz58kx1U1JSLtueM5w8eVK7d+/21c6fP/9F13SaU9vbyddRujTH\nelpaWqaRyS/G9u3b/bZH+fLlc7S+Uy7Ffp3T29rpupcCoSWbDh48qKlTp2b55t60adOLGsHXidrH\njx/Xhx9+qIkTJ2rJkiU6evSob1mZMmXUpEkT3X333apUqdJl1bckff/995o4ceJ567Zt2zboA86p\n2hMmTNCwYcO0fPlyFSpUSMWLF1dMTIx+/fVXbd68WdHR0brjjjvUr18/JScnZ7vukiVL9Oabb2ra\ntGk6ceKE8ubN66ublpamUqVK6Z577lHPnj2VO3fuy6JnSTpy5IjGjx+viRMnavny5X7fzp6YmKgm\nTZronnvuUY0aNQKqm8HM9NVXX2X5Ot54441KSkoKqq5T29vJ19HpY33WrFm+YyY1NVXp6emKjY3V\nNddcoyZNmqh79+4Bf3/Mzz//rJEjR2rixInavn273zf9RkZGqm7durrnnnvUtm1beb2BfyDg1P7h\n9H7txLZ2sm4oME7Ln9i1a5f69++v8ePHq0iRIrr22mv93tzXr1+vVatWKTk5WQMGDFD79u1DXnvE\niBF67rnnVKBAAbVq1SrLuosWLdL06dN144036vXXXw/oLz2n+l69erX69u2rRYsWqVatWuft+9Ch\nQ+rbt68efvjhbAcMJ2tfc8018nq96tatm1q1aqUSJUr4LU9LS9PSpUs1adIkTZ48WW+99ZbatWv3\np3Vbt26tFStWqGPHjmrVqpWqV6+u2NhY3/ItW7Zo0aJFmjhxotauXav33ntPjRs3DmnPkvT6669r\n0KBBKlmy5AX3v6lTp+r666/Xm2++qSuuuCJbtf/44w+9/vrreuutt3TgwAFVrlw5U+2dO3eqSZMm\n6t+/v66//vps1ZWc295Ovo5OHuvTpk1Tv379dPDgQTVv3vy8tZcuXapu3brpX//6lwoWLPindXv1\n6qWxY8eqSZMmF+x54sSJCg8P19ixY7MdApzcP5zcr53a1k7VDamAvhP6b6hgwYL26KOP2rfffnve\ndY4dO2YTJkywa6+91l5++eWQ17755ptt+fLlf7re4cOH7dVXX7URI0Zku2cz5/ouUaKEvfnmm3bg\nwIELrrdkyRJr166dDRo0KNs9O1l7xowZ2V5337592XptzMyGDx9uaWlp2Vp3/fr1Nnv27Gz34VTP\nZma33XabrVu37k/XO378uP373/+2d955J9u1ExMTrW3btjZ9+nQ7ceJEluts27bNBg8ebCVKlLBR\no0Zlu7ZT29vJ19HJY71GjRr22Wef2enTpy+43o4dO6xPnz72yiuvZKvuY489Znv37s3Wup9//rl9\n/PHH2VrXzNn9w8n92qlt7VTdUOJMy5/Yt29fQMkzkPWdrO0kp/o+ceKEIiMjs103kPWdrI1LZ/36\n9apQoUK21j1x4oR+/vnnbP+1C/dj//jrI7Tgb8/M5PF4HKndvXt3DRo06LL8vHjVqlWqVq1aqNv4\nW9uzZ4/S0tIyfTwHIGvc8hykNWvW6OOPP9bixYt1sbnvwIEDmj9/vn799VdJ0v79+/Xiiy9q4MCB\n2rRpU9B1P/jgA917772aOHGiJGnq1KmqWrWqypUrpyFDhlxUzxl27NihI0eOZJp/8uRJLVy4MKh6\n+/fv900vWrRId9xxh+rWratOnTpp6dKlF9VvVqKioi5qO0vSunXrsnyMHz9ey5cv900Havbs2Tp1\n6pRvesKECapSpYpy5cqlMmXKaNiwYUH3XKNGDZUuXVqDBw/WL7/8EnSdrFSsWFH/+te/tH379hyt\ne7YtW7bovffe04svvqhXXnlFkydP1qFDhxx7Pklau3atwsLCAv65w4cPq1OnTkpOTlbXrl114sQJ\nPfDAAypatKhSUlJUv379i+p906ZNeuWVVzRmzBj9/vvvmZ77/vvvD7r22X777Te98cYbeuCBB/T8\n88879vpu2rRJpUqVuqgaTu0fa9eu1fPPP6+33nrL771Kkg4dOqQ777wzqLqrV6/W1q1bfdMffPCB\nateuraSkJNWpU0eTJk0Kqm7Lli31/vvv648//gjq5y87ofxsyi06dOhghw4dMrMznw03adLEPB6P\nRUZGmsfjserVq9tvv/0WVO1ly5ZZfHy8eTwey5cvn61cudJSUlLsiiuusDJlylhMTIytWrUq4LrD\nhw+3mJgYa968uRUsWNBefvlly5cvnz399NP25JNPWlxcnI0ZMyaons3Mdu7caTVq1DCv12thYWHW\n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\nBQoEVbts2bJ+9WbMmGHHjh3zTQf7l0zNmjUznRE62+effx7UqcYMFStWtE8++STT/IzgUqJEiaAO\nhI0bN1pCQoJ16dLF/vWvf1lcXJx16tTJBg0aZF26dLGoqCgbO3Zs0H2bnbkuqUuXLlaxYkVbt26d\nRURE5FhoMTtzirhZs2ZWp06dHAktZ18r88Ybb/gtnzBhQtCv4/nezHJCdmofPHgwqNqNGze2Bx54\nwDf98ssvW9GiRX3T33zzTdDHY7du3ez+++8/7/KNGzdayZIlA65700032ciRI8+7fOzYsVarVq2A\n65qZNWrUyF577bUsl40bN84iIiIuKrRUrFjRqlatanFxcTZlyhS/5V999VVQZ4I7duxoDz/88HmX\nB3vtkJmz+0fjxo3PO+7UhAkTLmpb//LLL1ayZEmrV6+e9e7d22JiYqxOnTp29913W7169SwyMtI+\n//zzgOtm51g89w/QyxnD+GdDvXr19P3330uSypUr53eFtyR98cUXKl++fFC1//GPf2jv3r2+6RYt\nWvgt/+yzz3TttdcGXHfQoEEXHA78p59+Uo8ePQKum6FZs2YaNWqU2rZt6zc/PDxcH3/8sdq2basd\nO3YEXPfqq6/WsmXL9PTTT+ull17S0aNHNX78eIWHh6tGjRqaNGmS2rRpE3TfkhQXF6d3331XkyZN\nUuPGjXX69OmLqneuwoUL64svvtCwYcNUoEAB5cmTJ+ha5+5rcXFxftMnT55Uv379gqo9f/58x74H\nqGvXroqJibngOsFulxdeeEGNGzfW5MmTFRkZqd27d+vdd9/1LV+yZImaN28eVO2RI0decH+4+uqr\nM70m2TF+/PgLDkdfuHBhDRo0KOC6knTvvfdqwYIFWS7r2rWrzExvv/12ULUHDBjgN332SL6SNH36\ndNWtWzfguq+++qrfEPjnqly5stLT0wOuKzm7f9x3333nvSuyQ4cOkqRRo0YFVbtYsWJavXq1Xnjh\nBU2fPl1mpuXLl2v79u2qXbu2/ve//6l69eoB161fv/6fjjnlprFqGKclB2zZskWRkZFKTEzM8drH\njh1TWFjYZfflVqdOndKxY8fO+4vn9OnT2rFjR8DfWXM2M9PevXuVnp6uAgUKKCIiIuha57N9+3Z9\n8803uvHGG/kiSRfZtWuXZsyYobS0NDVs2FDlypULdUu4jLB//HURWv4G9u7dq127diksLEzJyckB\nfyFbILZu3aqkpCSFh3MSb82aNfrxxx9VtGhR1a5d+6IGsDt69KhWrVrlex1TUlJ0zTXXXFTNV199\nVbfddttFBcu/i5waJHDLli1avHix3+vYuHHjizobl5Xt27crNTVVycnJjvwxlZNSU1N926NkyZIq\nUKBAqFs6r/3791/W/f2Z06dPa//+/QoLC3PvvyOEH025yrFjx2z06NHWvXt3u+mmm6xFixb24IMP\n2n//+9+Lrr1z50575pln7IYbbrCyZcta+fLl7eabb7b//Oc/FzVmxujRo313a2Q8wsLCrFGjRtn6\nDo1gREREXPQtrU5tD7Mzn5V37tzZUlJSLDo62nLlymUVKlSwp59+OuhrLMycG8vn1KlT1qdPH4uN\njfW9hhnXtyQnJ/vdNhsoj8djYWFhduONN9qkSZOy/f042TFr1iy/cVnGjx9vlStXttjYWCtdunSm\nC6xzQkpKykV/Nr927dosHxERETZ16lTfdKCcHDvk1Vdftfnz55vZmeuEWrRo4Tc2UOvWrX37ZqAq\nVKhgAwcO9LvzKaf8+9//9l37dvajdu3aOT6WyOrVq+2jjz6yRYsWWXp6etB1vF6v3XDDDTZ+/Hg7\nfvx4DnZ4hlPvTzNmzLC6detaVFSUbzvHx8dbp06dfLdZuwWhJRt+/PFHS05OtoSEBCtatKh5PB5r\n0aKFXXfddRYWFmbt2rULeuCsFStWWHx8vFWpUsVq1qxpXq/XOnfubO3bt7e8efNazZo1g3rDGTp0\nqBUqVMheeOEFe+ONN6xMmTL27LPP2tSpU61du3YWFxdnq1evDqpns/OPZ+H1eu3GG2/0TQfKqe1h\nZjZz5kyLiYmxNm3aWIcOHSw2NtYefPBB69evn5UpU8ZKly5tu3btCqq2U2P59OvXz66++mqbNm2a\nzZw50+rWrWsvvviibdq0yZ555hmLioqyWbNmBdWzx+OxsWPHWuvWrS0iIsISEhKsV69eF/wizOxy\nclC8oUOHZvkICwuzJ554wjcdDKcGCXRy7JCSJUv6juWePXtahQoVbMmSJfbbb7/Z119/bdWqVbN7\n7703qNpODRKYcXHsG2+8YSNHjrSrr77aBg4caF9++aV17tzZYmNjM90pl11ODgbq8XjspptussjI\nSMuXL589+OCDF/U+ejan3p/ee+89y507tz388MP2+OOPW+HChe3xxx+3ESNGWP369a1AgQKuuhCX\n0JINzZo1s3vvvdf3TZlDhgyxZs2amdmZq65LlixpAwYMCKp27dq17dlnn/VNv//++3bdddeZ2Znx\nBapUqWIPPfRQwHVLlSrlN3Lshg0brGDBgr4zFffdd581bdo0qJ7Nzhy89evXzzSOhdfrtTZt2vim\nA+XU9jAzq1Klit+33M6ePdvKli1rZmdui2zUqFFQPZs5N5ZPsWLFbOHChb7pHTt2WFxcnO+vvIED\nB1rNmjUvuuc9e/bYiy++aGXLljWv12s1atSwUaNGBR0QnR4ULzEx0UqWLOn38Hg8Vrx4cStZsqSl\npKQEVdupQQKdHDskKirK99dyqVKlfGddMixbtsyKFSsWVG2nBgksWbKkb+RrszPjDSUkJPgC0UMP\nPWSNGzcOqraTg4Fm7Nf79u2zV155xcqXL+8bc+att96y33//Pai6Zs69P5UtW9YmTZrkm16xYoUl\nJib6zji1b98+qD8wQ4XQkg2xsbF+STQtLc0iIiJ8w1tPmzYtqNsgzc4MAnf2uCynT5+2iIgI2717\nt5md2XGDecOJjY31G5fF7Mx4JDt37jQzs1WrVlnu3LmD6tnMbOLEiZaYmJjpqwAu9hZfp7aHmVl0\ndLTfNklPT7eIiAjfNlm4cKEVLFgwqNpOjeWTO3fuTNsjPDzc9xfXhg0bgh6U7Hy3Qi5cuNC6du1q\nuXLlCnosFScHxbvnnnusSpUqmX5pXs6DBDo5dkiZMmV8I7KWLFnSli5d6rd87dq1QR/rTg0SeO77\nU3p6ut/705o1a4Ief8jJwUCzOmaWLFlid955p+XOndtiY2Otc+fOQdV26v0pJiYmy98Fv/zyi5md\nCbUXM9DopcYXJmZD3rx5dfjwYd/0sWPHdOrUKd9tZJUqVdKuXbuCql2oUCG/n92zZ49OnTrluzDv\niiuu8H2RYiDKlCnjdxvkwoULFRERoSJFikg6c+usXcQ12P/4xz+0ePFijRkzRm3bttVvv/0WdK2z\nObU9JKl48eK+W9clafPmzUpPT1dCQoIkKTExMcsvf8yuZ555Rr1795bX69Xu3bv9lu3fvz/T7crZ\nUbFiRd8XXkrSRx99pLi4ON/rmJ6eHvSdZee7iLdu3boaN26cdu7cqddffz2o2pK0ceNGrVu3TjEx\nMZluX01PTw/6VvO3335bAwYMUNOmTTV8+PCg+8tKZGSk3njjDb3yyitq1aqVhgwZEvStt2erUaOG\nhg4d6pseOnSoChYsqIIFC0qSjhw5EtT+IUk9evRQ3759lZqaqnvvvVd9+/b1fQHmrl271KdPHzVq\n1Cio2ufuI0WKFNETTzyhH374QXPnzlXp0qX10EMPBVz3yiuv1Jw5c3zT8+fPV2RkpG+/jo6OvqiL\nzDN+ds+ePapQoYLfsvLlywf9RY9Z9VSzZk2NHj1au3bt0rBhw7R58+agajv1/lSyZEmtXLnSN/3N\nN9/I6/WqcOHCkqT8+fPr5MmTQfUcEqFOTW7QtWtXq1+/vm3atMm2bNli7du39/v+mwULFlhSUlJQ\ntXv16mUVKlSwL7/80ubNm2c33HCDNWjQwLd85syZVrp06YDrvv/++xYZGWldunTxDdncu3dv3/J3\n3nnH97HLxTh9+rT179/fkpKSbObMmRc9UJtT28PM7LnnnrPExEQbMWKEjRkzxipUqOB3WnTKlClB\nD9RWv359v2HIzx1VdeDAgVa/fv2A6/73v/+1qKgou/baa61evXoWHh5ur7/+um/5yy+/bA0bNgyq\nZ6cHl3NqULwMO3bssIYNG9pNN91ku3btytGRjc1ydpDAVatWWf78+a1IkSJWokQJi4yMtIkTJ/qW\nDx8+3Lp06RJU7dOnT9vdd99t0dHRVqVKFYuOjjav12u5c+c2r9drFStWtB07dgRV26lBAj/88EOL\niIiw22+/3bp06WJxcXG+kbDNzEaOHHlRH3s6NRiok8eMU+9Pw4cPt/j4eOvbt6/179/fihUr5ht5\n18zsgw8+CPr73EKB0JINe/bsseuvv973RlyyZEm/U8cff/yxDRs2LKjahw8ftttvv93Cw8PN4/FY\nrVq1bMuWLb7ls2bNso8++iio2lOnTrVbb73VWrRoYcOGDfNdk2N25jRvsBedZmXx4sWWkpJiXq/3\not7cndweJ0+etL59+1qxYsUsISHBOnbsaPv27fMtX7ZsmX311VdB934hmzdvtu3btwf1s2vXrrUn\nn3zSHn30UZs9e3YOd+aMjGs/Mh4ZH6VmePfdd31f6Hkx0tPTbfDgwb47cXIytGQYOnSotWnTJujX\nL8POnTtt1KhR9uabbzrS5+rVq23gwIHWrVs369Kli/Xr188+++yzi7rjrlu3bkFf1/RnvvjiC+vY\nsaO1bdvWRo0a5bds//79mfaZ7HLqDwizMyMMO3HXkJmz709vvfWW1apVy6pVq2ZPPvmk/fHHH75l\nP/zwgyPf1O0UxmkJwI8//qi0tDSVLVs2x8chOX78uE6dOhX0KeLLwZEjR7R582aVLVv2ogfD+yts\nD1w6q1at0uLFi9WlSxfly5cv1O3gMubkYKBwHqHlLy4tLU1r1671G8wq2K8cOB83DljkRM9//PGH\nJk6cmGnwsDZt2gR9TTbR9UUAACAASURBVEEGpwYl27Vrl0aMGJFlz926dVNYWNhF1XdiULxLYd68\neX7bpFSpUmrZsuVFD3d+bt2UlBS1atUqR4ZRd/pYd2IQOLfuH04PEujUe6qbBvI7r9Ce6HEPNw54\n9swzz1iePHkyDd50xRVXBD22x9mcGrDIqe3hZM9OjeXj5KBkTo6J4+SgeGbOHY979uyxa6+91jfw\nntfrtWrVqvm2eZ8+fS6ruhnOPdYz9pWcONadGATu9OnT1qdPH4uJiXFk/3BqMFAnj0cz596fLuVA\nfk4jtGSDGwc8e/rpp+2KK66wSZMm2bRp0+z666+3IUOG2OrVq61Pnz4WFRVl8+bNC6pnM+cGLHJy\nADgnB1lyaiwfJwclc3JMHCcHxXPyeGzfvr21adPGfvvtNzt27Jg98MADvgtk586dawkJCZkuKg5l\nXTNnj3WnBoFzcv9wcjBQJ49Hp96fnBzILxQILdngxgHPihcv7jfIVGpqquXOnds3VPszzzxjderU\nCapnM+cGLHJyADgnB1lyaiwfJwclc3JMHCcHxXPyeMyTJ4+tX7/eN33kyBGLiIjwneF7//337aqr\nrrps6po5e6w7NQick/uHk4OBOnk8OvX+5ORAfqFAaMkGNw54FhcXd8FBydavXx/0oGRmzg1Y5OQA\ncE4OslSsWDG/AdR+++0383g8vr/4t2zZYlFRUQHXdXJQsuTkZFu8eLFveufOnebxeOzYsWNmZrZ1\n69agazs5KJ6Tx2PBggX97uw5duyYeb1eO3DggJmduQssmNfRqbpmzh7rTg0C5+T+4eRgoE4ej069\nPzk5kF8oMLhcNrhxwLPy5ctr8uTJvumpU6cqV65cvsGbJPkGxwuGUwMWOTkAnJODLDVu3Fi9e/fW\nd999p61bt6pnz56qUqWK7xu1U1NTVahQoYDrOjkoWZs2bdSzZ0/NnDlT8+fP1x133KH69esrJiZG\nkvT999+rePHiQdV2clA8J4/HOnXqqH///jp69KhOnjypJ598UqVKlVL+/PklSfv27Qvq7iSn6krO\nHutODQLn5P7h5GCgTh6PTr0/OT2Q3yUX6tTkBm4c8OzLL7+0iIgIq1evnjVp0sQiIiLsxRdf9C1/\n/fXXgx6rwMy5AYucHADOyUGWnBrLx8lByZwcE8fJQfGcPB43b95spUuXtvDwcIuIiLC8efPanDlz\nfMvHjh3rNwhaqOuaOXusOzUInJP7h5ODgTp5PDr1/uTkQH6hwC3P2XDkyBH16NFDU6ZM0enTp1Wz\nZk198MEHSklJkSTNnj1bBw8eVLt27QKuferUKT311FP64IMPlJaWpqZNm2ro0KG+W9GWL1+u48eP\nq169egHXXrlypSb+P/bOPK6m/P/jr3vbbqtQKkYqKZWllJ0WSzL2jOxbEWbILruRZQpj/ZIt2ZV1\nxtiyVYqSaKEFJWRERJaiqPfvjx6dR7du6Z5zTzG/+3w87mN0zr2v855zzudzPufzeX9enyNHGN1+\n/fqJHVcgEHCa0urv7y8W95IlSyASiQCUeNoUFRWhefPmUmnyeT74irksfHj5ZGVl4cyZMygoKEC3\nbt1gaWkpE91S+PLESUxMRHBwMHOue/bsKRNdPssjUPJmfv36dRQUFKBDhw4ymxbKly7Ab1k/f/68\nWJmZOHEisy8nJwcAmJ5QaeDr/sjOzsaAAQNw8+ZNCAQCGBoa4uTJk7CxsQEAHD9+HFlZWZg2bRor\nfT7LI1/1E1/XsDaQN1qkQG54JkfO94O8PMqpCj7NQOXUHvKcFikQiUT/mQry06dPiImJqe0w/t+Q\nmZkJd3d3meu+ffsW+/fvl7kuUJJP1K1bN1608/LycO3aNU4atVEeX758CR8fnx9GF+C3rH/9+hVP\nnz6Vua4s7o9mzZqhRYsWNdpg4bM88gVf15Av5I0WGcBn5Z6SkgITExOZ6z548AAdO3aUuW4pCQkJ\nnN1UJcHX+QD4ixkA3rx5g3379slc9+nTpxg/frzMdYGSYZjw8HBetNPS0uDk5MSLNp/l8cWLF1i+\nfPkPowvwW9aTkpKYYTlZwuf9wdcLBMBveeSrfuLrGvKFvM9MBvBZuRcWFuLJkye8aPMNHyOPfJ8P\ntjGfPn26yv2PHj1ipfv+/fsq95edJSEtmzdvrnL/v//+y1q7NuFSHhMTE6vcX3Zm2/egK0d6Sl8g\n9uzZI/Vv+SyP1UGezSFvtFQLPiv3WbNmVbn/1atXrHQbNmxY5f6vX7+y0i3F1dW1yv3v3r1jNY2O\nr/MB8BczUDJ9WCAQVFmpsNHW1tau8ndExDrmGTNmwMDAoNLpsIWFhax0ATBTeSujqKiItTaf5dHa\n2rrS61i6nc355ksX4Lest2nTpsr9nz59YqXL5/3B1wsEwG955Kt+4usa1hbyRNxqIBQKv1m5v3jx\nglVBU1BQgLW1daULbX38+BF37tyRWltNTQ2enp6wsLCQuD8zMxN//PEH68pBSUkJPXv2ZDwEyvPm\nzRucOXNGan2+zgefMQMl/jJbt27FwIEDJe6Pj4+Hra2t1Np16tTBokWL0L59e4n7Hz58iEmTJrGK\n2djYGH5+fnBzc5NpzACgrq6OKVOmoGXLlhL3P3nyBMuXL2elzWd51NXVhZ+fX6ULXCYlJaFfv35S\na/OlC/Bb1kUiEYYNG1bp8EFWVhZ27doltTbf90d1XiDYaPNZHvmqn/i6hrVGjU+y/gExMjKi4ODg\nSvfHxcWRUChkpW1ubk4HDhyQuXaHDh1o06ZNle6Pj49nHTMRUcuWLWn37t2V7mcbN1/ng4i/mImI\n+vXrR0uWLKl0f3x8PAkEAql1HR0dxTw3ZKVLRMy6KXxod+rUqcq1dLjcf3yWx169etGKFSsq3c/2\nnPClS8RvWbe1taVt27ZVup/tuebz/mjYsCGdOnWq0v1c7g8+yyNf9RNf17C2kCfiVgNbW1vcvn27\n0v3fatXXhnavXr2QnZ1d6f66detW+oZdHWxtbXHnzp1K96uoqMDQ0JCVLp/nmo+YAWDu3Lno1KlT\npftNTU0RGhoqte6IESMYnwZJ6OvrY9myZVLrAoCPj0+VXiaWlpbIyMhgpd2nTx/k5uZWur9evXoY\nM2YMK20+75FJkybByMio0v2GhoYIDAz8bnQBfst6ly5dqsy30dTUZOWZxPf9UVU553J/8Fke+aqf\n+LqGtYV8eKgaJCcnIz8/H3Z2dhL3f/nyBc+fP0eTJk2k1n7x4gUKCgpY/bY2KSgoQFFREdTU1GSq\ny+f54CtmOTULn+VRzo9PREQE8vLy4OLiInF/Xl4eYmNj4eDgUMORVY28fqoe8kaLHDly5MiRI+eH\nQD489ANR3fZlXFxctTULCgqknm6Zl5fH6/erizTtbT5jnjx5MjIzM6v13eDgYBw6dKha3w0KCqp2\nDJmZmbh+/Xq1v+/i4oIbN25883sfPnyAn58ftm7dWm3tqKioan83Ly8PSUlJ1f4+n/j6+iI/P79a\n37158ybOnj1bq7oAv2VdWsOx6s7a+lHvDz7LI1/1E1/XsDaRN1q+AZ+Vu4WFBQ4fPvzNqaUPHz7E\nlClT4OfnVy3dQYMGoV+/fjh9+jQKCgokfufRo0fw8fGBqalptf7/ymJqaorVq1fj+fPnlX6HiHDp\n0iX07t37m1NUS+HrfPAZM1AyM6RFixbo3bs3/P39cevWLfz777/IyclBWloaTp8+jXnz5sHQ0BAb\nN25Eq1atqqXr7++P5s2bw8/PDykpKRX2v3v3DufOncOIESNga2sr1crGQ4YMgZubGywsLODt7Y1j\nx47h+vXruH37Ni5fvozNmzfDzc0NBgYGiIuLQ//+/autPWbMGPTs2RNHjx6tdEXu5ORkLFy4EKam\nplWO45eHz/KYnJwMQ0NDTJkyBefPnxebXv/161ckJiZi27Zt6NSpE4YNG1bpDLea0gX4Lett27bF\nxIkTq3TTfffuHXbt2oUWLVrg5MmT1dLl8/7g6wUC4Lc88lU/8XUNaxP58NA3CAgIwLJly6CpqYn+\n/fvDzs4ODRs2hEgkwtu3b5GcnIzIyEicO3cOffv2xdq1a9G4ceNqaV+9ehXe3t5IS0uDs7NzpdrJ\nycmYOnUqFi5cWK0KraCgAFu2bMG2bdvw/PlzWFlZiemmpKTg1atX6NevHxYtWvTNefzluX//PhYv\nXozTp0/D2tpaYtxRUVFQUlLCggUL4OnpWS0nR77OB58xl5KdnY2AgAAEBQXh3r17Yvs0NTXRo0cP\neHp6wtnZudqaAHDmzBls2bIFly9fhrq6OvT09JiYX7x4AV1dXYwfPx4zZsxAgwYNpNIuLCzE8ePH\nERwcjIiICCYxUiAQwNLSkllYzdzcXCrdL1++YMeOHfjf//6H9PR0mJmZiZ3r1NRU5OXlwdXVFQsW\nLECLFi2qrc1neQRKTOC2bt2KY8eO4d27d1BQUICKigrTU2JjYwNPT0+MHTsWKioqta7LZ1l/8+YN\nVq9ejT179kBJSUniuU5KSoKdnR0WL16M3r17V0uXz/tjyZIl2Lx5Mzp16lTl/REUFIRGjRph586d\nlU67lgRf5ZGv+omva1ibyBst1YCvyr2UGzduIDg4GNeuXcPjx4/x6dMn6OjowMbGBr169cKoUaOg\nra0ttS4RISoqChERERV0u3fvDn19fVbxlvLs2TMcO3as0rh//vlnCIXSd+bxdT74jLksubm5ePLk\nCaPdtGlT1oZTpeTk5CAyMrJCzDY2NpzjLeXdu3f49OkT6tevDyUlJZlo3rlzR+L95+Tk9E2Dscrg\nuzwCJWUnMTFRLG5ra2vOKzPzqctXWf/8+TPOnTsnUbtXr15SNSrKw8f9wdcLRFn4Ko981U98XsOa\nRt5oYQEflbscOXLYIS+PciqDjxcIObWLvNEiR44cOXLkyPkhkCfiypEjR44cOXJ+COSNFjly5MiR\nI0fOD4G80SJHjhw5cuTI+SGQN1pkBJfl32uK4uLi2g7hP8+uXbvw8OFD3vQLCwtx//59md5vmZmZ\nePbsGfN3TEwMZsyYgZ07d8rsGD8qaWlpCAkJwadPnwBIZ2hYG7p8ce3aNYn33NevX3Ht2jWZHOPz\n588y0alJ+CiPcqpGnojLkeTkZOzevRuHDh3Cy5cvWesoKCggKyurwtz+nJwcNGjQgPWy4USEdevW\nYfv27cjMzERqaipMTEzg4+MDIyMj1ouSlSc/Px9Pnz6tYAxXXSM1SRQXFyMtLQ3Z2dkVGlxcF/iK\niIjAjh07kJ6ejuPHj6NRo0Y4cOAAjI2N0aVLF9a6zZs3x8OHD6GnpwcHBwc4OjrCwcEBzZs35xRv\nfn4+pk2bhn379gEAHjx4ABMTE3h5eaFhw4aYP38+a+2uXbvC09MTo0ePxosXL2Bubg4rKys8ePAA\nXl5eWLp0KafYr1y5gitXrki8jnv27OGknZubi+PHjyM9PR1z585FvXr1cOfOHejp6aFRo0asdXNy\ncjB06FBcvXoVAoEADx8+hImJCTw8PKCtrY0///zzu9CVpmHp6ekpbbgMfNVPxcXFWLVqFbZv346X\nL18y9/WSJUtgZGQEDw8P1jF369YNJ0+erGCP8P79ewwcOBBXr15lrc1nebxw4QI0NDSYemjr1q3Y\ntWsXLC0tsXXrVtStW5eV7unTpyVuFwgEEIlEMDU1hbGxMeu4a4waWEn6P8eHDx9o165d1KFDB1JQ\nUKDOnTvT+vXrOWkKBAJ6+fJlhe3//vsviUQi1rqrV6+mJk2a0O7du0lVVZXS09OJiOjIkSPUsWNH\n1rqlZGdnU58+fUgoFEr8sCUqKoqMjY1JKBSSQCAQ+3BdRv348eOkqqpKEyZMIBUVFeacbN26lXr3\n7s1Jm4goKyuLDh8+TJMmTSJzc3MSCoWkp6dHQ4cOZa3p5eVFtra2FBERQerq6kzMf//9N1lbW3OK\nV1tbm1JTU4mIaNOmTdSpUyciIgoJCSFjY2NO2r///jsJhUJq164dDRgwgAYOHCj24UJCQgLp6uqS\nqakpKSoqMudk8eLFNHr0aE7ao0ePpl69elFmZiZpaGgw2iEhIWRpafnd6Orr64t9VFVVSSAQkJqa\nGqmpqZFAICBVVVUyMDBgHTNRSf2UnZ1dYfv9+/dJU1OTte7y5cvJxMSEDh48KFY/BQcHU4cOHVjr\nElVep758+ZIUFRU5afNZHlu0aEFnz54lIqLExERSUVGhBQsWUPv27WncuHGsdUvrTkn1ael/7e3t\n6c2bN5zi5xt5o0UKIiIiaOzYsaShoUEtW7YkBQUFioyM5KS5adMm2rRpEwmFQlq1ahXz96ZNm2j9\n+vU0cOBAToWgWbNmFBISQkQkVkkmJydT3bp1OcVORDRixAjq1KkTxcTEkLq6Ol28eJEOHDhA5ubm\ndObMGda6rVu3piFDhlBycjK9ffuWcnNzxT5csLa2pn379hGR+DmJi4sjPT09Ttpl+fjxI124cIHG\njRtHioqKpKCgwFrL0NCQoqKiiEg85ocPH3J6aBARqaurU0ZGBhER9evXj3x9fYmI6MmTJ5wazEQl\nD9X9+/dz0qiM7t2709y5c4lI/Jxcv36dmjRpwklbT0+P4uPjK2g/evSI1NXVvztdIqJjx45Rhw4d\nGH0iovj4eOrUqRMdPXqUleagQYNo0KBBJBQK6eeff2b+HjRoEPXv35+MjIyoV69erGNu2rQpXb58\nmYjEz0dKSgppa2uz0kxISKCEhAQSCAQUGhrK/J2QkEB37txhXuS4UFPlcdmyZTR48GAiIrp9+zan\n+uny5cvUvn17unz5Mr1//57ev39Ply9fpg4dOtDZs2cpMjKSrKysyN3dnVP8fKNY2z09PwJr1qzB\nnj178PHjRwwfPhyRkZFo3bo1lJSUWHfVlbJhwwYAJcM427dvF7NmVlZWhpGREbZv385aPzMzE2Zm\nZhL3VbZWiTRcvXoVf//9N9q2bQuhUIgmTZqgZ8+e0NLSwh9//IE+ffqw0n348CGOHz8OU1NTzjGW\n5/79+xKHl7S0tBh3VbacP38e4eHhCAsLQ0JCAqysrGBvb48TJ06ga9eurHVfvXol0RY8Ly+Ps1mW\nlZUVtm/fjj59+uDSpUtYsWIFAOD58+eoX78+J+3CwkJ06tSJk0Zl3Lp1Czt27KiwvVGjRnjx4gUn\n7by8PKipqVXY/vr1a6ls9mtKFwAWLFiAI0eOoHXr1sy21q1bY+PGjRg2bBiGDBkitWadOnUAlNRP\nmpqaUFVVZfYpKyujQ4cOmDhxIuuY//33X4llvLi4GF++fGGlaW1tDYFAAIFAgG7dulXYr6qqii1b\ntrDSLoXP8qisrMws73D58mVmCL9evXp4//49a93p06dj586dYuWxe/fuEIlE8PT0RFJSEjZu3Ah3\nd3dO8fONvNFSDRYuXAhvb2/4+PhItR5NdcjIyAAAODk54eTJk5wbQeVp3rw5oqKiYGRkJLb91KlT\nnPJNSsnLy2MKb7169fDq1SuYmZmhZcuWUi10Vp727dsjLS2Nl0aLgYEB0tLSKpyTyMhImJiYcNLu\n06cPdHV1MXv2bISEhDCVPlfatm2Ls2fPYtq0aQDAVIy7du1Cx44dOWn7+flh0KBBWLt2LcaOHcs8\n9E6fPo127dpx0p4wYQIOHz6MJUuWcNKRhEgkkliJ379/H7q6upy07e3tsX//fqYBJxAIUFxcjLVr\n18LJyem70wVKLOAlPTAFAgGysrJYaQYGBgIAjIyMMGfOHKirq3OKsTxWVlaIiIhAkyZNxLYfO3YM\nNjY2rDQzMjJARDAxMUFMTIzYvaCsrIwGDRpwrsf5LI9dunTBrFmz0LlzZ8TExCA4OBhASd7MTz/9\nxFo3PT1d4lptWlpaePToEQCgWbNmeP36Netj1Ai13NPzQ7Bq1Spq1qwZNW7cmObNm0d3794lIiJF\nRUVKSkri5Zhfv36luLg4zuOLJ06coHr16tHGjRtJTU2NtmzZQlOnTiUVFRU6d+4c5zjt7OzowoUL\nREQ0YMAAGj16ND179ozmzZtHJiYmrHVPnjxJlpaWFBgYSLGxsWJdvAkJCZxi9vPzI0tLS4qOjiZN\nTU2KiIiggwcPkq6uLm3ZsoWT9oYNG2jQoEGko6NDenp65ObmRtu2baPk5GROutevXydNTU2aPHky\niUQimj59OvXo0YPU1dUpNjaWtW5xcTE9fvyY3r17V+Fey8jIkJgTIA1eXl6kra1N9vb2NHXqVJo5\nc6bYhwsTJ06kgQMHUmFhIWloaNCjR4/oyZMnZGNjQ9OnT+eknZSURLq6uuTi4kLKysr0yy+/kIWF\nBenp6VFaWtp3p0tE1Lt3b7K1tWXqJyKiu3fvkp2dHedcrfz8fMrLy2P+fvz4MW3YsIEZembL6dOn\nqU6dOuTr60tqamq0du1amjBhAikrK9PFixc5afMJX+WRqGRYtk+fPtSqVSvavXs3s33GjBk0bdo0\n1rqdO3cmFxcXsdyk7OxscnFxoa5duxIR0aVLl6hZs2bsg68B5I0WKQgLC6MxY8aQuro6tWrVSiY5\nLaVMnz6duUG/fv1KnTp1IoFAQOrq6hQaGspJ+++//6Z27dqRkpISKSgokK2tLZ0+fVoGURMdPHiQ\nAgMDiYjozp07pKurS0KhkEQiEQUFBbHWLZ8sVj5hjCsLFy5kkhYFAgGJRCJavHgxZ92yJCYm0pYt\nW8jV1ZWUlJRIX1+fs96YMWPIysqKLCwsaOTIkZSYmMhJs6ioiJSUlOjBgwecdCrD0dGx0o+TkxMn\n7Xfv3lHnzp1JW1ubFBQUqHHjxqSkpET29vb08eNHzrFnZWXR0qVLqU+fPtS7d29atGgRPX/+/LvV\nff78OTk5OTH1hoaGBgmFQnJycuKs37NnT/L39yciordv31KDBg3op59+IpFIRNu2beOkfeHCBbK3\ntyd1dXVSVVWlzp07c24MERHt3btXLK9u7ty5VKdOHerYsSM9fvyYsz4f5ZFPUlNTydzcnJSVlalp\n06ZkampKysrK1Lx5c7p//z4REZ06dYq3HDRZIZ/yzIIPHz7g0KFDCAwMxO3bt9GuXTv88ssvmDVr\nFmvNRo0a4e+//4adnR3++usv/PbbbwgNDcX+/fsRGhqK69evyyR2IuJ1wbD8/HykpqbC0NCQ08q1\nT548qXJ/+e5kNuTn5yM5ORnFxcWwtLSEhoYGZ81S4uLiEBYWhtDQUERERODDhw+wsbHBrVu3ZHYM\nWWFlZYWAgAB06NChtkNhxdWrV3Hnzh0UFxejTZs26NGjR22HVKvcvXsXKSkpICJYWlqiZcuWnDV1\ndHQQHh4OKysr7N69G1u2bEFcXBxOnDiBpUuXIiUlRQaRyxZzc3P4+/ujW7duiIqKQvfu3bFx40ac\nOXMGioqKOHnyZG2HWCnp6ekIDAxEeno6Nm3ahAYNGuDChQto3LgxrKysWOsSEUJCQvDgwQMQEZo3\nb46ePXvKbKX4mkDeaOHI3bt3ERAQgMOHDyM7O5u1jkgkQlpaGn766Sd4enpCTU0NGzduREZGBlq3\nbs0pAQsouVlzcnIq+GRISiaTw57+/fsjMjIS79+/h7W1NRwdHeHo6Ah7e3uJ48nSwJdvzdmzZ+Hr\n6wt/f3/elqhPS0tDeno67O3toaqqynvjWRbk5uYiJiZG4vmWxt8oMTGx2t9lm2f25csXtG7dGidO\nnICFhQUrjapQU1NjXkbc3NxgZWWFZcuWITMzE+bm5kziKFsKCwslnmdDQ0OZxOzt7Y2srCzs378f\nSUlJcHR0xKtXrzjFzFd5DA8PR+/evdG5c2dcu3YNKSkpMDExwZo1axATE4Pjx49zivtHR56Iy5GW\nLVti48aNWLt2LScdPT09JCcnw8DAABcuXMC2bdsAlPQGcEkay8jIgKenJ8LDw8UMoEofGmxNoUr5\n5ZdfYGdnV8FMae3atYiJicGxY8dYa6enp2Pjxo1ISUmBQCCAhYUFpk+fjqZNm3KKOS8vD76+vpUa\nnpUmpbHBzMwMnp6eMmmklCU6OhojRozAkydPKrincr2Oo0aNQn5+Plq3bg1lZWWxGSIA8ObNG9ba\nOTk5cHNzQ2hoqJiZ2oQJEziZtJXCl3HdP//8g5EjRyIvLw+amppiDSyBQCBVo6V0Nkv5hlrpdSy7\nje11VFJSQm5uLm8NQVNTU/z1118YNGgQQkJCMHPmTABAdnY2p/v84cOHcHd3x40bN8S2y6J+0tDQ\nQE5ODgwNDXHx4kUmZpFIxDgRs4XP8jh//nysXLkSs2bNgqamJrPdyckJmzZtYq0L8Gv0WFPIGy0y\nQklJidPvx48fDzc3NxgYGEAgEKBnz54AgJs3b3JyUx03bhwKCwsRHBzMaMuS8PBwLFu2rMJ2FxcX\nrFu3jrVuSEgI+vfvD2tra3Tu3BlEhBs3bsDKygr//PMPc37YMGHCBISHh2P06NEyPydc/p+rYvLk\nybCzs8PZs2dlHvPGjRtlplWemTNnQklJCU+fPhXrARg6dChmzpzJqdGyfPly+Pj4wM7OTubnZPbs\n2XB3d8fq1aslTlGWhtIZgkDJsOGcOXMwd+5cZpZJVFQU/vzzT6xZs4bTcSZPnoz169dj+/btMu/u\nX7p0KUaMGIGZM2eiW7duTOwXL15kPcsHKKmfFBUVcebMGZlfw549e2LChAmwsbHBgwcPGPuFpKSk\nCjMHpYXP8nj37l0cPny4wnZdXV3k5OSw1uWzvNQoNZ5FI6dSjh07RuvXr6fMzExm2969e+mvv/5i\nramurs555kpViEQixk21LCkpKZyMyaytrcnb27vCdm9vb7KxsWGtS0RUp04dmSVQSyIsLIz69u3L\nJLv169ePrl27xklTTU2NHj58KKMIaw4+zdT4NK5TU1NjYpUlbdu2ZdxOy3L27Flq06YNJ+1hw4aR\npqYmGRoaUv/+/Wn48OFiH65kZWXRnTt3qKioiNl28+ZNSklJYa2ppqbG6fdV8fbtW/rtt9+of//+\ndP78eWb70qVLvFZ2mQAAIABJREFUaeXKlZy0+SyPjRo1ouvXrxOReJk5efIkpxmZfJaXmkTe0/Id\n8csvv1TYNnbsWE6aZmZmnA3TqqJFixYIDg6usD5NUFAQLC0tWeumpKTg6NGjFba7u7tz7hmoW7cu\n6tWrx0mjMg4ePIjx48fD1dUVXl5eTA9R9+7dsXfvXowYMYKVLp++NWX59OlTBVMvLt3/fJqp8Wlc\n16tXL8TGxnL27SnP3bt3Ja7vYmxsjOTkZM76Zc0cScbpivr6+vj48SMuXbrE5Ca1bduW0xu7paUl\nb74g2tra+N///ldh+/Llyzlr81keR4wYAW9vbxw7dozx8bl+/TrmzJnDaa04PstLTSJPxK1FNm/e\nDE9PT4hEImzevLnK73p5eVVbt+yihdHR0ViyZAn8/PzQsmXLCsNYysrK0gVdjtOnT2Pw4MEYMWIE\n4z555coVHDlyBMeOHcPAgQNZ6TZu3Bjr16+v4OJ59OhRzJkzB0+fPmUd88GDB/H3339j3759nLv+\ny2NhYQFPT09m/LyU9evXY9euXVLNsiibwJmeno7Fixdj7ty5Eq8jF6PAvLw8eHt74+jRoxK7n7mM\nz/fp0wdt2rTBihUroKmpicTERDRp0gTDhg1DcXExp6RCb29vaGho8GJcFxAQAB8fH4wfP17i+e7f\nvz8r3TZt2sDCwgIBAQEQiUQASpyp3d3dkZKSwsmQkU8qy01is9Bj2UkFsbGxWLx4MVavXi3xPHPN\nCytdGPXRo0c4duwYp4VRa6o8fvnyBePGjUNQUBCICIqKiigqKsKIESOwd+9e1jmOfJaXmkTeaKlF\njI2NERsbi/r161e5uqZAIJAqOVQoFFZI+KvsbYhrIi5QMvtk9erViI+Ph6qqKlq1aoVly5bBwcGB\ntaaPjw82bNiA+fPno1OnThAIBIiMjISfnx9mz56NxYsXS6VnY2Mjdg7S0tJARDAyMqpQ4XB5cKio\nqCApKanCG1haWhpatGiBz58/V1ur9DpWVkTLJndyuY6l0+t9fHwwZswYbN26Ff/++y927NgBX19f\njBw5krV2cnIyHB0dYWtri6tXr6J///5ISkrCmzdvcP36damTqsvaChQXF2Pfvn1o1aoVWrVqVeE6\nrl+/nnXcVeWEcDnfMTEx6NevH4qLixnn4YSEBAgEApw5c4azAzFfjBkzBtnZ2di9ezcsLCyQkJAA\nExMTJsE1KSmp2lrVqZ9kcV+fOHECo0ePxsiRI3HgwAEkJyfDxMQE27Ztw5kzZ3Du3Dmp9GqqPJaS\nnp6OuLg4FBcXw8bGBs2aNeOkN336dOzfv5+X8lKTyBstMkIoFMLR0RFr166Fra1trcYSEhJS7e/2\n6tWLx0jYQ0TYuHEj/vzzTzx//hwA0LBhQ8ydOxdeXl5Sd0lL0yUsKbG4upiammLu3LmYNGmS2PYd\nO3Zg3bp1ePjwYbW1vuVVUxYuvjWGhobYv38/HB0doaWlhTt37sDU1BQHDhzAkSNHpK7cy/PixQv4\n+/vj9u3bjJfKb7/9BgMDA6m1qmt1LxAIcPXqVan1a4L8/HwcPHgQqampjJfKiBEjWFnkd+rUCefO\nnYO2tjY6duxYZbkoP0NHGvT19RESEoLWrVtDU1OTabRkZGSgZcuW+PjxY7W1wsPDq/1dLi8+NjY2\nmDlzJsaMGSMWc3x8PFxcXKRen6qmyiNfVFV2vufyUh55TouM2LNnD548eQIvLy+ZGcEBJa3tiRMn\nSnVD9erVC2vWrMG0adMqTF/lC1n7LAgEAsycORMzZ87Ehw8fAEBs+p+0LFu2DNeuXUOnTp2gqMjf\nbT979mx4eXkhPj5erIdo7969Uk9XbNKkCdzd3bFp0yZO/+/f4s2bN0xPn5aWFjPFuUuXLpgyZQpn\nfX19fZnkEQBAaGioTHRqEzU1NXh6espEy8HBgRnidXR0lImmJGSZm+Tg4AAfHx/MmTNH5sOzZZH1\nwqh8lsdZs2ZhxYoVUFdX/6ZJKdsekf9C2QHkPS3fPQkJCWjTpo3U3Y0KCgrIysri3TyOT58FWVNT\n5+TUqVP4888/mfwVCwsLzJ07FwMGDJBaqyZibtWqFbZs2QIHBwc4OzujVatWWLduHTZv3ow1a9bg\n2bNnUmtWN+eITaO2pq5jXl4ewsPD8fTpU7E8MUC6HDNJJCcnS9RlmyvDN7LOTaqJa9i0aVPs2LED\nPXr0EOtp2b9/P3x9fVklPvMVt5OTE06dOgVtbe1v9ib+VxofbJH3tLDgR3D3rKm2qCx9Ftq0aYMr\nV66gbt26FXJQysMm76SmzsmgQYMwaNAgmWjVRMzjx49HQkICHBwcsGDBAvTp0wdbtmzB169fWb/V\nlc3RIgkmalwatTVxTuLi4vDzzz8jPz8feXl5qFevHl6/fg01NTU0aNCAdaPl0aNHGDRoEO7evSuW\nH1F6bmTRyL93756YISMX2/dS1q5dC0dHR8TGxqKwsBDz5s0Ty02Slpq4hpMmTcL06dOxZ88eCAQC\nPH/+HFFRUZgzZ06F2Y7Vha+4yzZEZNkocXV1xd69e6GlpQVXV9cqv/s9L2tQFnmjRQpycnIwdOhQ\nXL16lRd3T1lTEw2p+Ph43L59m5MBXikDBgxgupoHDBjAS/zfW+OyOvAdc9mZTk5OTkhNTUVsbCya\nNm3KJItKi0AgwE8//YRx48ahX79+vA7J8cHMmTPRr18/+Pv7Q1tbG9HR0VBSUsKoUaMwffp01rrT\np0+HsbExLl++DBMTE8TExCAnJwezZ8/mbEyYlZWFMWPG4MqVK8yw8OfPn+Hk5IQDBw6wyiEqxdLS\nEomJifD394eCggLy8vLg6urKOjcJ4P++njdvHt69ewcnJyd8/vwZ9vb2UFFRwZw5czB16lTWurVV\nh6SkpKBPnz5STcqoU6cOE6+WltYPWf+VRz48JAWyzKCvLmyHh4RCIWxtbb/p1MslOQ8A2rZtiw0b\nNkg9fbA2EAqFzLpOVSFt70LdunWrXRlIa4kvFArFKh5Z6QLg1fflxYsX2LdvH/bu3Yu3b99i1KhR\n8PDwkMm6OEKhEPv27UOdOnWq/B6XoRZtbW3cvHkT5ubm0NbWRlRUFCwsLHDz5k2MHTsWqamprHR1\ndHRw9epVtGrVCnXq1EFMTAzMzc1x9epVzJ49G3Fxcaxj/vnnn5GdnY2AgACxmUkTJ06Ejo4O54Rq\nWSIUCtGiRYtvNmZlMQVclguj8lkevwXbZ8F/jR/r9aeWuXjxIkJCQvDTTz+JbW/WrJlUmeVl+dYw\nCJeFyDp27MhqRoI0+Pn5Yd68eTL3WTAxMcGtW7dQv359se25ublo06YN6/WB7t69W6U3DZs3kbJm\ndzk5OVi5ciV69eolZtMeEhLC2h9h+fLl33xAs8HMzAyNGjWCk5MT8+Fqb16Kvr4+vL294e3tjcjI\nSAQGBqJ9+/awtLSEh4cHPDw8OFnNf8t0kWs+lZKSEnMv6OnpMcsQ1KlTh5NHUFFREfPQ1NHRwfPn\nz2Fubo4mTZrg/v37rHWBkmGFyMhIsd6x1q1bY+vWraxn4fCZm9SrVy+ZrqxenkuXLqFz585QU1OD\nnZ2dzHT5Ko98061bN5w8eRLa2tpi29+/f4+BAwfKZw/9F+HD3ZOt+Vp1WLx4Me/Jij169AAAdO/e\nXWw710Tcx48fS/xtQUEBq8TQUk6dOiXzc1L2ATp48GD4+PiIdT97eXnhf//7Hy5fvlzBdK46DBs2\njJfrGB4ejvDwcISFhWHq1Kn4/PkzDA0N0a1bN6YR06hRI87H6dKlC7p06YLVq1dj+PDhmDx5MgYP\nHszJlfjFixe83ts2NjaIjY2FmZkZnJycsHTpUrx+/RoHDhxAy5YtWeu2aNECiYmJMDExQfv27bFm\nzRooKytj586dnN13K7tWAoEA+vr6rDSNjIwkNuTL5vEJBAJ8/fpVau25c+fyeg0HDx6MgoIC2Nra\nwsHBAY6OjujcuTPnhhJf5ZFvwsLCKiR+AyVDiBEREbUQETvkjRYpsLe3x/79+7FixQoAYCyW165d\nW23/iPJw8QSpipoau5R1Jvvp06eZf4eEhIi90RQVFeHKlStVGvFVRU2ck5CQEPj5+VXY3qtXrwor\nYVcHPmPu2rUrunbtisWLF+PLly+IiopCWFgYwsLCcOTIERQUFMDU1JRzD8CNGzewZ88eHDt2DObm\n5ti6dWuFtz1pqInruHr1amaq/YoVKzB27FhMmTIFpqamnFbDXbx4MfLy8gAAK1euRN++fdG1a1fU\nr18fwcHBnGL29fXFtGnTsHPnTrRo0QJASVLujBkzJN6T1aGy4SoiQlBQEDZv3syqEVAT1/Dt27eI\niYlhGuZbt27F58+f0aZNGzg6OsLX11dqzR8xJ6Ssk29ycrKYP01RUREuXLggk5eTGoPXlY3+YyQl\nJZGuri65uLiQsrIy/fLLL2RhYUF6enqUlpZW2+GJIRAI6OXLl7UdhtQIBAISCAQkFAqZf5d+lJWV\nyczMjP755x/W2nyfE0NDQ1qzZk2F7WvWrCFDQ0Op9Wr6Oubn59PFixdp9uzZpKWlRUKhkJXO8+fP\nydfXl8zNzalBgwY0c+ZMunfvnkxirO17+927dzLVy8nJoeLiYla/1dfXJwMDA+YjEolIKBSSuro6\naWhokFAoJJFIRAYGBjKL99KlS2Rra0uampq0bNky+vDhg9QatXEN7969S2PHjiVFRUXW9zWfcWtr\na1PdunUr/WhqarKKu7Q+lVSnCgQCUlNTo4CAAB7+j/hB3tMiBXxk0PNFSkoKdHV1a+x4+fn5En0n\npF2Do9ScztjYGLdu3YKOjo7MYgwMDOR9LHr58uXw8PBAWFgYk9MSHR2NCxcuYPfu3VLrlTfrkzWf\nP3/GjRs3EBoairCwMNy6dQvGxsZwcHCAv78/61yIJk2aoGHDhhg7diz69+8PJSUlFBUVib31AezW\naBk7dixvponr1q3DnDlzKt3//v17ODs7Izo6WmbH5DJM9vvvv8ssjm9x+/ZtzJ8/HxEREZgwYQLO\nnTvHepgkIyOD9/opJSWF6WUJDw9HUVERunTpgj///JP1fc1neeS6EGxlZGRkgIiY2Wplz7uysjIa\nNGjAej2j2kA+e0gOJ169eoXx48fj/PnzEvf/f8x0v3nzJjZv3oyUlBTGpt3Lywvt27ev7dDEcHBw\nwK1bt9C0aVPY29vDwcEBDg4O0NPT46xdNsm2tEu9fFXzvZkPAoCqqiq2bduG8ePHV9j34cMHODs7\n4927d1IZk33LH6Ms36NXRlpaGhYtWoQTJ07Azc0NK1eulPnq13wgFAqhq6uLGTNmoH///jLxq5FT\n+8h7WqTA2NgYo0aNwqhRo2Bubl7b4XwXzJgxA2/fvkV0dDTj6vjy5UusXLmSs28Nn46kfNK+fXsc\nOnSotsP4Jjdu3ICBgQGcnJzg6OgIe3t7mfVsZWRkyESnpjlw4ABGjx6NunXriiXJf/z4Eb169cKb\nN29w7do1qTRraqaJpCRLoKRx+C3rg8r49ddfERAQACcnJ8TGxsLa2ppLiDWKl5cXrl27ht9//x1/\n/fUXHB0d4ejoiK5du/I6a+l75sGDBwgLC5O45Apbw72aRt7TIgXr16/HkSNHcPv2bdjY2GD06NEY\nOnQob0NDubm5nBIWawIDAwP8/fffaNeuHbS0tJgZF6dPn8aaNWsQGRnJSvdbjqRspzzXBMXFxUhL\nS5NYMUhaC6W2yMvLQ0REBMLCwhAaGor4+HiYmZkxMy0cHBxqdIjxe2H37t3w8vLC2bNn4eTkhI8f\nP8LFxQXZ2dkIDw//7oaCSym/enJZBAIBmjZtinHjxmH+/PnVTigVCoUQiUTfNI+UhZ8KX+Tm5iIi\nIoKZLXf37l1YW1vLdIjvR2DXrl2YMmUKdHR0oK+vL3YPCASC7/oalkXeaGHBgwcPcOjQIQQFBeHR\no0dwcnLCqFGjMGbMGNaafn5+MDIywtChQwEAbm5uOHHiBPT19XHu3DnWzqR8o6WlhcTERBgZGcHI\nyAiHDh1C586dkZGRASsrK9Y+M46OjjAzM2McSRMSEsQcSaXpcq9JoqOjMWLECDx58uSHGA4py4cP\nHxAZGcnktyQkJKBZs2a4d+9ebYdW46xZswarVq3C33//jSVLliArKwvh4eEyn2VRWFiIwsJCmbz5\nBwQEYMmSJRg5ciTatWsHIsKtW7dw+PBhLFy4EC9evMCmTZuwZMkSzJ07t1qa1V3okq9ZkLLgzZs3\nCA8PZ+7rpKQk6OrqSr3K849OkyZN8Ouvv8Lb27u2Q+FGLSUA/2eIiooia2tr1tnopRgbG9P169eJ\niOjixYukra1NISEh5OHhQT179pRFqBV4+fIl61kLpdjZ2dGFCxeIiGjAgAE0evRoevbsGc2bN49M\nTExY69apU4dSU1OZfycnJxMRUXR0NJmbm3OKmU9at25NQ4YMoeTkZHr79i3l5uaKffggPDxcJtpF\nRUUUHR1Nf/zxBzk7O5Oamhrn+/pHZv78+SQUCsnExIQyMzM56+3Zs4emTp1KBw8eZPSVlZVJKBRS\njx496PXr15z0nZ2d6dChQxW2Hzp0iJydnZkYmjdvzuk4NcWTJ0/o69evrH/v5eVFrVq1IgUFBdLV\n1aXBgwfTli1b6O7duzKMsiKyKo+yRlNTk9LT02s7DM7IGy0suXnzJk2fPp309fVJVVWV3NzcOOmJ\nRCJ6+vQpEZUUNk9PTyIiun//Pmlra3OOVxICgYBatGhBZ8+eZa1x8OBBCgwMJCKiO3fukK6uLjPN\nMigoiLWujo4O3b9/n4iIzMzMmIZRSkoKqaqqstb9FkZGRuTu7k7Pnj1j9Xs1NTV6+PChjKOqGoFA\nQPXq1aN169ZJ9buioiK6efMm+fn5kYuLCzOlsnHjxjRmzBgKDAykx48f8xQ1v4wfP572798v9e8G\nDRok9lFRUaF27dpV2C4tK1euJFVVVerevTvVq1ePJk+eTPr6+uTr60tr1qyhn376iSZPniy1bllU\nVVUl3nsPHjxgysyjR494LT+yRCAQkJmZGZ04cYLV72uqkVIetuWxOnCx1nB3dyd/f38ZRlM7yBNx\npaB0WOjw4cN4/PgxnJyc4OvrC1dXV2hqanLSrlu3LjIzM9G4cWNcuHABK1euBFAy44KvIYXz588j\nIyMDu3fvxs8//8xKY+TIkcy/bWxs8PjxY6SmpsLQ0JBTUidfjqTfYuzYsXjy5Ans7e2Rnp4u9e/b\nt2/P65o+ksjIyEBGRgZCQkKk+p22tjby8vJgYGAAR0dHrF+/Hk5OTmjatClPkdYcjx49QmhoKNat\nW4eEhIRq/6580uzw4cNlEs/evXsREBCA4cOHIzY2Fu3bt0dwcDB++eUXACVOuZMnT+Z0jIYNG2L/\n/v3w8fER237gwAE0bNgQQInhWt26dTkdp6YIDQ1FRkYGjh8/zmo4+Pjx4zxE9W3YlsfyaGlpoWvX\nrnB3d8fgwYMRGRkJV1dXZGdns9IzNTXFkiVLEB0dLXHJle95ckNZ5DktUiAUCmFnZ4cRI0Zg2LBh\nrK2xJTF16lScOXMGzZo1Q1xcHB4/fgwNDQ0EBwfDz8/vh0mSkhWxsbH48OEDnJyc8OrVK4wdOxaR\nkZEwNTVFYGDgd5vjc+rUKSxevBhz586VWDGw8SXhix07dsDJyQlmZma8HeP333/H+PHj0aRJE96O\nURX379//Lmb6qaioIC0tDY0bN2b+TkxMZGL7999/YWxsXOkMoOpw4sQJDBs2DDY2NmjXrh0EAgFi\nYmIQFxeHoKAguLq64n//+x9SUlKwdetWmfx/fe/wMVumqKgIkZGRaNWqFa8NwOPHjyMpKQmBgYGo\nV68eUlNTMWrUKOzcuZOVXlVO4gKB4Lue3FAWeaNFCh48eMBbBf/lyxds2rQJmZmZGDduHGxsbACU\nGA5paGhgwoQJrHUBMA/P58+f4/Tp07CwsGBtsDRr1qxqf1faFZN/dCQtAigQCDivxZSZmQmBQMAs\n1hkTE4PDhw/D0tISnp6enGLmE1tbWyQkJMDBwQEeHh5wdXWFSCSq7bBqHKFQKLZekqamJrNKPAC8\nfPkSDRs25Nyr+uDBA/j7++P+/fsgIjRv3hxTpkzhtWHKhU+fPoGImDXdnjx5glOnTsHS0hLOzs6c\ntPmcLSMSiZCSksJ6SRFJ5OTkgIgq9FAHBATA09MT6urqSE1NZXrN/r8ib7T8x3FxcUG/fv3w22+/\n4f3792jevDmKioqQm5uLbdu2wcPDQ2rN6q6zJBAIvsuVQ4uKirB3715cuXJF4hsYl5i/tdo32x6H\nrl27wtPTE6NHj8aLFy9gbm4OKysrPHjwAF5eXt+1x0JiYiICAwNx+PBhFBYWYtiwYXB3d0fbtm05\na/8ovhNCoRBXr15l3G87deqEo0ePMo3Q169fo2fPnt/17LLyyMKSwdnZGa6urpg8eTJyc3PRvHlz\nKCkp4fXr11i/fj2mTJnCWpvP2TJt27aFr69vhYViudCnTx8MHTpUbBbqmTNn4Obmhu3bt+PKlStQ\nVlbGrl27ZHbMHxF5o0UKioqKsGHDBhw9elSi4dmbN2+k1ixvVCVrHw9dXV2EhoaiRYsW2LNnDzZu\n3Ig7d+7g6NGjWLVqFZKSkmR6PFmRk5ODpUuXIjQ0VOIDic25LmXq1KnYu3cv+vTpAwMDgwqeFRs2\nbGCtzRd169ZFdHQ0zM3NsXnzZgQHB+P69eu4ePEiJk+e/EN07X79+hX//PMPAgMDceHCBZibm2PC\nhAkYN24cKwO2H8l3otRDRVJ1K4ueuFI+fvyIO3fuSCwzbm5urHX5smTQ0dFBeHg4rKyssHv3bmzZ\nsgVxcXE4ceIEli5dipSUFNYxa2lpIT4+nhf33osXL8Lb2xsrVqyAra0t1NXVKxxbWurXr4/o6Gg0\na9YMABAREYF+/fphz549cHV1RUxMDAYMGICsrCxWMbu7u1e5n8tCoDWJPBFXCpYvX47du3dj1qxZ\nWLJkCRYtWoTHjx/jr7/+Yv1WN3bsWObffIwrfvz4kXkgXLx4EYMGDYKioiK6dOmCx48fy/RY5Ycw\nuDBq1Cikp6fDw8MDenp6Ml1dNSgoCEePHmWdfFye06dPo3fv3lBSUhJbpVoS/fv3Z3WML1++QEVF\nBQBw+fJlRqd58+asK7Gapri4GIWFhSgoKAARoV69evD398eSJUuwa9cu5oFYXVauXIlVq1b9EL4T\nNeEQfOHCBYwYMQK5ublQVlau0Ijj0mjZsWMHDh48CAC4dOkSLl26hPPnz+Po0aOYO3cuLl68yEo3\nPz+fmcRw8eJFuLq6QigUokOHDt/stfwWQ4YMYRr1ssbFxQVASXkue565ND6/fv2KT58+ASgx1xw2\nbBiCg4PRq1cvACWJ8x8/fmQd89u3b8X+/vLlC+7du4fc3Fx069aNtW6NU+PzlX5gTExM6MyZM0RE\npKGhwUw/27RpEw0fPrw2Q6sUKysr8vf3p5cvX5K2tjZFRkYSEdHt27epQYMGnPW/fPlCixcvZlYE\nFgqFpKWlRYsWLaLCwkLWuhoaGhQfH885PkkYGBgw06llQdmVXyWtolp25Wq2tGvXjry9venatWsk\nEomYcxMVFUWNGjVirVtYWEjjxo3j1b8hNjaWfvvtN6pXrx4ZGBiQt7e32NTcdevWsboX/yu+E7LC\n3NycJk+eTG/evJG5Nl+WDC1btqRNmzbR06dPSUtLi27cuEFEJfeMnp6e1HqbNm1iPqtXryYdHR0a\nO3YsrVu3Tmzfpk2bWMdMRBQWFlblhw3Ozs5kZ2dHixYtorp169Kff/4ptn/58uXUtm1bTnGXp6io\niCZNmkR+fn4y1eUTeaNFCtTU1OjJkydEVLIk/O3bt4mIKD09nbS0tFjrFhYWkqOjo0wfpKUcPnyY\nFBUVSUFBgRwcHJjtfn5+jOEUFyZNmkQNGjSg7du3U0JCAiUkJND27dtJX1+fJk2axFrXzs6OoqKi\nOMcniXXr1tGvv/7K2VivJgkNDSVtbW0SCoU0fvx4ZvuCBQtY+YaUpU6dOrw9/Fu2bEmKior0888/\n06lTpySahWVnZ5NAIJBam2/fifv379OOHTtoxYoVtHz5crHP94iamhpv19HAwIAxvzQzM6OjR48S\nEVFqaippamqy1j127BgpKSkxBnulrF69mlxcXKTWMzIyqtbH2NiYdcx8kZaWRk5OTtSjRw/asmUL\nqaur0/z58ykoKIh+/fVXUlRUZO1ZUxWpqamkr68vc12+kDdapMDMzIyio6OJiKhLly70xx9/EBFR\nUFAQ6erqctLW0dGhBw8ecI5REk+ePKEbN27Qly9fmG0REREyMV3S0tKic+fOVdh+7tw5Tg25mJgY\n6tatG4WFhdHr16/p3bt3Yh8uDBw4kOrUqUPGxsbUt29fzsZhRFQjhnJfv36t8BadkZFB2dnZnHTH\njRtX4a1OVvj4+LA26vsWfL5J79y5kxQUFEhPT49at25N1tbWzMfGxkZG/weypW/fvrw81IiIfvvt\nN2rSpAn16NGD6tevTx8+fCCikrqP6/nIysqiO3fuUFFREbPt5s2blJKSwkmXb65du0YjR46kjh07\nMvf4/v37KSIiQib6V65coXbt2pFIJKKmTZvSjh07ZKJbnrNnz5KOjg4v2nwgz2mRgkGDBuHKlSto\n3749pk+fjuHDhyMgIABPnz7FzJkzOWmPGTMGAQEB8PX1lVG0JWOW2trauHnzJjp27Ci2r0uXLjI5\nhkgkgpGRUYXtRkZGUFZWZq2rra2Nd+/eVRhrJRkkLGpra2PQoEGsfy8JMzMzNGrUCE5OTsxH0nlh\nS7du3XDy5MkKvhD16tXDwIEDOc14MjU1xYoVK3Djxg2JSYVsTae+fPmCwMBADB48WOZr9gDAzp07\noaGhwSyEVxaBQMDJLOtHypcpZciQIZgzZw4ePHgg0SOIyxTiDRs2wMjICJmZmVizZg2zVlJWVhZ+\n/fVXTnGxu3+KAAAgAElEQVTr6+tDX19fLCeuXbt2nDQBwMfHB3PmzGGmU5fy6dMnrF27ltPsshMn\nTmD06NEYOXIk7ty5g4KCAgAl63etXr0a586d4xQ7UFLmb968yVmnlPJWFUSErKwsnD17Viy38ntH\nPnuIA9HR0bhx4wZMTU1ZJ1iWMm3aNOzfvx+mpqaws7Or8OBg63dibGyM06dP8+Yi6+Pjg9TUVAQG\nBjKJogUFBfDw8ECzZs1YL6TWrl07KCoqYvr06RITcdl6zPBF6SqyYWFhiIqKwufPn2FoaIhu3box\njRguD+7yPh+lZGdno1GjRowfDxv4NJ1q1KgRLl++DAsLC9YatQGfM0/4QpJHUCnf62KdX79+xfLl\ny7F582YmyVRDQwPTpk3DsmXLKjS8pEFBQQFZWVkVykxOTg4aNGjA6XzY2Nhg5syZGDNmjJjnTnx8\nPFxcXL7LxRjLW1UIhULo6uqiW7ducHd3h6Lij9GHIW+0fCdU5X3Cxe9kx44dOHfuHA4ePMh5qYFS\nyltqX758GSoqKsy0x4SEBBQWFqJ79+44efIkq2OoqakhLi6OVzfTV69e4f79+xAIBDAzM4Ourq5M\ndL98+YKoqCiEhYUhLCwM0dHRKCgogKmpKe7fvy+VVmJiIgDA2tpazOcDKJmCf+HCBezYsUPmM8Fk\nha+vL1JTU7F79+4fplIEAA8PD7Rt25aXmSd8Ufq2XxmlLxXSwLclw+TJk3Hq1Cn4+PgwvcFRUVH4\n/fffMWDAAGzfvp21tlAoxMuXLyuU66tXr2Lo0KF49eoVa201NTUkJyfDyMhIrNHy6NEjWFpa4vPn\nz6y15VTNj1OLfCfwZWYVGhrKNTSJ7N27F0lJSTAwMEDTpk0r9ODcuHFDas3ynhqDBw8W+7vUqpwL\ndnZ2yMzM5KXRkpeXx/RslV5DBQUFjBkzBlu2bKnQnSwtSkpKsLe3R9u2bdGxY0eEhIRg165dSEtL\nk1rL2toaAoEAAoFA4rREVVVVbNmyhVO8fHLz5k1cuXIFFy9eRMuWLSvcf2wbtaU8e/YMp0+fluib\nxMWNma91WmxsbCRO3xcIBBCJRDA1NcW4ceOqbeBYFjaNkm/BtyXDkSNHEBQUhN69ezPbWrVqBUND\nQwwbNoxVo6Vu3bpMmTEzMxM730VFRfj48SPnxqiBgQHS0tIqDAFHRkb+UL1zPyLyRosUfMvMShYO\nnGlpaUhPT4e9vT1UVVWZHA62ODo6wtHRkXNcZQkMDJSpniSmTZuG6dOn87KGz6xZsxAeHo5//vkH\nnTt3BlBS2Xh5eWH27Nnw9/dnpfv582fcuHEDoaGhCAsLw61bt2BsbAwHBwf4+/uzGtLKyMgAEcHE\nxAQxMTFib43Kyspo0KABFBQUWMVbFr4e/tra2hUatbLiypUr6N+/P4yNjXH//n20aNECjx8/BhGh\nTZs2nLT5ypdxcXGBv78/WrZsiXbt2oGIEBsbi8TERIwbNw7Jycno0aMHTp48iQEDBlQrzrFjx0JF\nReWba9KwWe6Bb38ZPnLiNm7cCCKCu7s7li9fLvaSpaysDCMjowo5ftIyadIkTJ8+HXv27IFAIMDz\n588RFRWFOXPmfFdOzEDlDeXyfE9mjFUhHx6SAj5toXNycuDm5obQ0FAIBAI8fPgQJiYm8PDwgLa2\nNv7880+ZH/N7hq81fIASF87jx49XaMyFhobCzc2NVbexg4MDbt26haZNm8Le3h4ODg5wcHCAnp4e\n6zhrim89/L/HpRiAkrwnFxcX+Pj4MF30DRo0wMiRI+Hi4sLJAp4vJk6cCENDQyxZskRs+8qVK/Hk\nyRPs2rULy5Ytw9mzZxEbG/tNPQMDA9y7dw/169eHgYFBpd8rfbB+b/CVE/f161ccPHgQPXr0kInZ\npSQWLVqEDRs2MENBKioqmDNnDlasWCHzY3FZMmH58uXMv4kIf/zxByZPniw21AyA9bmucWp+wtKP\nC59mVqNHj6ZevXpRZmYmaWhoMMcJCQkhS0tLTtofPnygAwcO0O+//85Mmb179y69ePGCc9xEJV4L\nQ4YMofbt25ONjY3Yhy2PHz+u8sMFVVVVSk5OrrD93r17pKamxkpTUVGRGjduTNOmTaMTJ07Qq1ev\nOMVYntWrV1NAQECF7QEBAeTr68tJu23btrRkyRIiIube+/DhA/Xv35+2bdvGSZtPyho8amtr0717\n94iIKD4+npo0aSKTYxQUFFBqaqqYXQAXtLS0JE6Pf/jwIWMRkJKSQhoaGjI5niwJCwujvn37UtOm\nTcnU1JT69etH165dk1qnvMWApqYm6ejoUPfu3al79+6ko6NDWlpanP2HVFVVOdcV3yIvL49u3bpF\nN2/eZKaBc8XX15eCgoKYv4cMGUJCoZAaNmwoE8PNss+XH5HK083lVKDUFpoPLl68CD8/vwpvBc2a\nNeNkZ52cnIxmzZph4cKFWLlyJWPlfPjwYcyfP59TzACwefNmjB8/Hg0aNEBcXBzatWuH+vXr49Gj\nR2Lj1NLSpEmTKj9c6NixI5YtWyaWLPfp0ycsX76cdbdxbm4udu7cCTU1Nfj5+aFRo0Zo2bIlpk6d\niuPHj3NK+gNKEqqbN29eYbuVlRWnZEUASElJYXIXFBUV8enTJ2hoaMDHxwd+fn6ctG1sbNCmTZsK\nH1tbW3Tu3Bljx45lnc+lrq7OJJ82bNgQ6enpzL7Xr19zijs/Px8eHh5QU1ODlZUVnj59CqAkl4WL\nLYFIJJKYR3bjxg1m9evi4mJW+SnJycmV7jt//rzUemUp7bVQU1ODl5cXpk6dClVVVXTv3h2HDx+W\nSqtOnTpin8GDB6Nv375o3LgxGjdujL59+8LV1ZXVelRlad++PeLi4jhpfAs1NTXY2dmhXbt2zDRw\nruzYsYPJCyy7ZELv3r0xd+5cmRzjR0ae0/INNm/ezPybr+Q8oCQ5VFIC6OvXrzkl2M2YMQNubm7Y\nuHGj2CJeffr0wahRo1jrlrJt2zbs3LkTw4cPx759+zBv3jyYmJhg6dKlUi9qWBNr+ADApk2b4OLi\ngp9++gmtW7eGQCBAfHw8RCIRQkJCWGmqq6vDxcWFWZPkw4cPiIyMRGhoKNasWYORI0eiWbNmuHfv\nHiv9Fy9eSOz+19XV5bz2kKSHv5WVFQDuD39Z53CUpUOHDrh+/TosLS3Rp08fzJ49G3fv3sXJkyfR\noUMHTnEvWLAACQkJCAsLY64pAPTo0QPLli1j3eCfNm0aJk+ejNu3b6Nt27YQCASIiYnB7t27sXDh\nQgBASEgIbGxspNZ2dnbG9evXKzTq//nnHwwbNgx5eXmsYgaAVatWYc2aNWJ+VNOnT8f69euxYsUK\njBgxotpaNZETBwC//vorZs+ejWfPnkn0H+KSF5eXlwdfX99KV4rnkrCclZXFNFpKV3l2dnaGkZER\n2rdvz1r3P0Ntd/V879SULfTPP/9MixcvJqKS7rtHjx5RUVERDRkyhAYPHsxat06dOkx3dNluwYyM\nDBKJRJxiJhLvgtXV1WW6Lx88eED16tWTSqsm1vApJT8/n3bu3EmzZs2imTNn0q5duyg/P5+zbilF\nRUUUHR1Nf/zxBzk7O5OamhqnuE1NTenAgQMVtu/fv5/zvTdgwADauXMnERHNnTuXTE1NaeXKldSm\nTRvq3r07J+0JEyaQj49Phe0rVqygCRMmEBHR0qVLydbWVmrt9PR0SkhIIKKSbvopU6ZQy5YtadCg\nQZyHBQwNDZllJMqWm4cPH3KyrSciOnjwIHXo0IHq1q1LdevWpQ4dOtChQ4eY/fn5+fTp0yepdRcu\nXEimpqZMGSIiOnXqFKmpqUm8d6RBWVm50mEtFRUVTtp8UVndIYs6ZNiwYWRgYEDz5s2jDRs20MaN\nG8U+XOBryYRSfvThIXlPyzeoidVZAWDt2rVwdHREbGwsCgsLMW/ePCQlJeHNmze4fv06a10lJSWJ\nb1jp6ekVErHYoK+vj5ycHGbYJjo6Gq1bt2ZmvUhD2beV8m8uskZVVRUTJ06UmV5xcTFiY2MRFhaG\n0NBQXL9+HXl5eYxL7tatW1lNYy1lwoQJmDFjBr58+cJMfb5y5QrmzZuH2bNnc4p9/fr1jLHX77//\njo8fPyI4OBimpqbYsGEDJ+2jR4/i9u3bFbYPGzYMtra22LVrF4YPH85qhlLZqaVqamrYtm0bp1jL\n8urVqwqmZEDJGzbXFcdHjhyJkSNHVrpfVVWVle6qVauQk5MDZ2dnhIeH4/Llyxg9ejQCAgIwfPhw\ntuECKLExuHLlCkxNTcW2X7lyhZPFQU5ODpYuXYrQ0FCJPRbS9taWhc+6+/z58zh79iwz+1CWuLq6\nYsSIEWjWrBlycnKYYfb4+PgK5786lB0tAEqSlPfu3QsdHR2x7VxGCmoSeaOFA1+/fsXnz59lMpZp\naWmJxMRE+Pv7Q0FBAXl5eXB1dcVvv/1W5ayAb9GvXz+sWrUKR44cAVAyiyArKwsLFiyQiZV9t27d\n8M8//6BNmzbw8PDAzJkzcfz4ccTGxlYwoatN+B560tbWRl5eHgwMDODo6Ij169fDyckJTZs2ZRuy\nGPPmzcObN2/w66+/MlOSRSIRvL29sWDBAk7afD78S3M4yle2ssjh4JO2bdvi7NmzmDZtGgAwDZVd\nu3Zxni4LAIWFhRIf0oaGhpx0/f39MXz4cHTq1AkZGRkIDAzE0KFDOWkC/8femcfllL///3W3l1YV\nWVIqUsqEbFmSNUIMg48GyZqlJjS2KLsZWw0xBlGylLHEjLFUSokQFVpUZA9Digot1++Pfp1vd/cd\n3efct7vM/Xw8zmM673PPdS51n3Ou835f1+sCFixYAA8PDyQnJ8POzg48Hg/x8fHYv38/AgICWNv9\n8ccfkZOTg6lTpwpVvuYC19y3z6GjoyOWlz5hiLtlQs0XDwMDAxw4cIBvjGvbi6+JrOS5Dpw5cwav\nX7/GxIkTmbG1a9di9erVKCsrQ79+/RAWFibQF6Y+kJ+fD0dHRzx48ABv3rxB69at8eTJE9jY2OD8\n+fOcVXIrKipQUVHBqJ2Gh4cjPj4eZmZmmDVrFqf+Q1FRUbWuGQcFBYlkq7oMviTkznft2gUHBwe0\nbdtW5P9XFN6/f4/09HSoqqqiTZs2YnnYm5iY4Pr169DV1eUbf/v2LTp16sRpfX7NmjVYt24dpk+f\nLjSHo6ps9MyZM7hw4UKd/a0LXPxOSEiAo6MjXFxcsH//fsycORN3797FlStXEBsbi86dO7Oym5WV\nBTc3N4FkXGJZyi+sMODjx4+YM2cOHB0dMWbMGGacS+8hADhx4gQ2b96M9PR0AICFhQW8vb1FzkWq\njoaGBuLj4xk1bXGTk5MDf39/pKeng8fjwcLCAp6enpxfJkJDQxEREYHg4GDOYpQ1uXTpEuzs7AQU\npMvKypCQkCB2VeKGhixoqQP9+vXD6NGjMWfOHACVN7TevXtj1apVsLCwwLJlyzBkyBCRp7irJNrr\nApeksYqKCpw9exY3b95ERUUFOnXqhKFDh3724S1tVq5ciVWrVsHW1hbNmjUTeAM7ceKElDyTLuIW\nHwRq72v04sULtGrV6ovy8F/i4MGD2L59O9PCwNzcHPPmzWOSN0tKShhF2Lr6a2RkhAkTJghdwqnC\n09OTk9+3b9/Gpk2bkJSUxFw3ixYt4tTHq2fPnlBQUMDixYuFfq9FfXjX9Rqur72HunTpgm3btnFO\nnBbGuXPnMGLECNjY2KBnz54gIiQkJCAlJQWnT5/GwIEDRbJXU6QtOzsbRARjY2OBogwuQm2S7Jn0\nLSALWupAkyZN+DL658+fj7S0NJw9exZA5UyMp6cnsrKyRLIrJyfHCKZ9DnHfcD58+FDnB8SXOHv2\nLNTV1Zmu0YGBgdi9ezcsLS0RGBjIevapWbNm+PXXX/lmt8RFSEgIxo0bJzBL8enTJxw5cgSTJk0S\n+zm5IgnxwaplspEjRyI4OJivxLS8vBxRUVG4cOGCyP2SJE14eDj27duHmJgYDBkyBG5ubvU+CK+i\nUaNGSEpKElq+zgZRAkpxzMolJSUxsxaWlpasqpyqc/36dSxevBgrVqyAlZWVwMO/esWjqHTs2BGD\nBw8WKFFfvHgxzp8/L3JgUV2k7UtwEWqrrWfSvXv3YGtri8LCQta2vwmkk//bsFBRUaGHDx8y+126\ndKFffvmF2c/NzWUlSvYlATVxiKlt2bKFjh49yuxPnDiR5OTkyNjYmBHj4oKVlRX9/fffRESUmppK\nSkpKtGTJEurWrRu5urqyttu4cWNGOEzcyMnJ8VVYVPHvv/+KpTJJEkhCfLBmRUX1TUlJidq2bUun\nT58Wi/8fP36kx48f08OHD/k2Ljx58oTWrFlDZmZm1KxZM1q0aBHdu3dPLP46ODiQn5+fwPibN2/I\nwcGBtV1bW1uKi4vj4ppUePHiBTk4OBCPxyMdHR3S1tYmHo9H/fr1o5cvX7K2e+/ePercuTPJycnx\nbeKo8FFWVhb6fcjMzKyXFU9VYntycnI0dOhQPgG+ESNGkLGxMQ0ePFjabkodWdBSB0xMTOjs2bNE\nVKkuq6SkRPHx8czxpKQk0tPTk5Z7n8XExIS5SUZFRZGmpiZFRETQxIkTydHRkbP9Ro0a0YMHD4iI\nyNfXlynPTkpKoqZNm7K2+/PPPwstlRUHPB5P6I02OTmZdHR0JHJOrjRt2pQpJ68etNy/f58aNWrE\nybaxsbHYFXyruHfvHvXq1UsiD6XqxMTEUN++fUlOTo5RfeYCj8cjPT09cnZ2pvfv3zPjeXl5nPyO\nioqiHj160MWLF+nff/+lgoICvo0LCxYsoO3btwuMBwYGkre3NyfbY8eOpc6dO/MpSd+9e5dsbW1p\n/PjxrO126dKFevToQUeOHKGLFy9STEwM38aFli1bMuXC1QkLCyNDQ0NOtlu3bk3//vuvwHh+fj5r\nCQJXV1dydXUlHo9H48aNY/ZdXV1pxowZtG7dOoldpw0JWfVQHRgzZgx++uknLF26FGfOnIGBgQHf\nGuyNGzdYdSP+UhVLddiKqT179ozJoj99+jTGjh2LESNGwNzcXCxVEEpKSiguLgYAREZGMksrjRs3\n5jSN+eHDB/zxxx+IjIxEhw4dBKaN2ZTIVq1J83g89O/fny/Rrby8HA8ePOATEhOV0tJSzJgxA8uX\nLxd7p1dJiQ8Cki0NdXV1hYKCAv766y+hORxc+fDhA/78808EBQUhMTERP/zwg9gSIyMjIzFz5kx0\n794dp0+fFtrYT1QGDBgAAOjfvz/fOImhp9aRI0eE5np169YN69evx6+//sra9tmzZxEZGQkLCwtm\nrGoJmEuC7507d3Dr1i2JdHOfPn06ZsyYgfv37/NVPP3yyy+cZQJyc3OF/q0+fvyIJ0+esLJZJbpn\nbGyMhQsXCojhyahEFrTUAV9fXzx79gweHh4wMDBAaGgoX2fdw4cPY/jw4SLbHTlyJN9+zfyWmi3V\n2aCtrY1nz57B0NAQZ8+ehZ+fH2O7tLSUlc3q9OrVC/Pnz0fPnj1x7do1hIWFAahcf+XSqCw1NRU2\nNjYAwFpFtiZVv+/k5GQMHjyYr1S9qvsrl47EioqKOHHihEAzPHHQp08fhISEMM3YeDweKioqsHHj\nRtb6L4mJiXjz5g1fu4WQkBD4+vqiqKgII0eOxLZt2zgFRcnJyWLN4agiMTERe/fuRVhYGExNTeHm\n5oZjx46JtYKvWbNmiI2NhZubG7p06YKjR4/yPbTZwLZlQV34999/hZbhamtrc24jUVFRIfDiAFR+\n57loKtna2uLx48cSCVqWL18ODQ0NbN68mZEFaN68Ofz8/FiX91Z/0Tx37pzQPLDWrVtz8tvX1xdl\nZWWIjIxETk4OJkyYAA0NDTx79gyampoiSWyI8uLIJX/oqyLtqR4ZlVy4cIE6depEZ8+epYKCAios\nLKSzZ8+Sra0tnT9/nrXdGTNmkKmpKTk5OZG2tjYzBR0eHk4dOnTg7PfDhw/JycmJOnToQHv27GHG\nf/rpJ5o3bx5n+5Jg//79rBRH64Krqytt3rxZ7Hbv3r1L+vr65OjoSEpKSjRmzBiysLCgpk2bss79\ncXR05Gu2mJqaSgoKCjRt2jTavHkzGRgYkK+vLye/JZHDYWlpSXp6euTh4cEo4oqbmnlPq1evJmVl\nZVqxYkW9zXuysLCgnTt3Cozv2LGDzM3NOdkeMWIE9enTh54+fcqMPXnyhOzt7WnkyJGs7YaHh5Ol\npSXt27ePbty4QSkpKXybuCgsLKTCwkLOdr5GHlhubi61a9eO1NTUSF5enlkK9vT0pJkzZ4rsb82l\nWUkv1UoaWfVQPcHKygq///47U4VTRVxcHGbMmMFoI4jKx48fsXHjRjx+/BhTp05F165dAVQq8DZq\n1IiVWJG0qKiowN9//429e/fi5MmTnO3duHGDT7+BrfZGddauXYtNmzahf//+QvudcBFwysvLw86d\nO/lKcLmIDzZr1gynT5+Gra0tAGDZsmWIjY1FfHw8AODo0aPw9fX9bCO+LxEdHQ0fHx+sW7dOaL8u\nNm93cnJyaNSoERQUFD673MRFTVVYGfixY8cwefJklJSUiDTzmZqaCisrK8jJyX1R5oCLtMHvv/8O\nb29vLF26lE81ef369fjll184XeuPHz+Gs7Mz7ty5A0NDQ/B4PDx69AjW1taIiIhgPasqrOKrasa5\nvpZpA0Dr1q1x/fp1AVVZcTBy5EhoaGhg79690NXVRUpKCkxMTBAbG4tp06aJVKUaGxtb58/a29uz\ncferIwta6gmqqqq4du2agAZEamoqunXrhpKSEil5VndKSkoElpzEMeWYlZWFoKAgBAcHIz8/H4MH\nD+YUtDx9+hTjx4/H5cuXoa2tDaBSSM3Ozg6HDx/mJEv+ualhHo/HSfBM3KioqCArK4v59/bq1QuO\njo7w8fEBULlub21tjXfv3rE+R9VDqWZwweWhFBwcXKfPVXWuZsPDhw9haGgo8FC9c+cOkpKSRLJd\nU9iwNpkDcTykt27divXr1zONLg0MDODn54cZM2ZwslvFhQsXkJGRASKCpaUlk6PDli91sGejauvg\n4PDF3Ckej4eoqCiRbX8N9PT0cPnyZZibm0NDQ4MJWnJzc2FpacnkEP5XkQUt9YQ+ffpAUVERoaGh\nzJtzXl4eJk6ciE+fPokUMVcnPDz8s8fHjh3Lym4VRUVFWLRoEcLDw/H69WuB42xvwiUlJQgPD8fe\nvXtx9epVlJeXY+vWrXBzc+PcNmHQoEEoLCxEcHAws5aemZkJNzc3NGrUSKjKaH0gPz8fe/fu5Zsd\nmjJlCms5cSMjIxw4cAB9+vTBp0+foK2tjdOnTzNJordv34a9vT2nGYsvfW8bytsdFx4+fIhWrVqB\nx+NJ5CFdEyLCkydPoKqqKraZgMePH9cazF+9elUi4nBsqd6JuiaFhYU4fPgwPn78yDlALCoqQmxs\nLB49esS01qiCy4xq48aNER8fD0tLS76gJT4+HqNHj8aLFy/qbOtrCZh+VaS0LCWjBllZWWRlZUWK\niopkampKpqampKioSO3btxfaXbWuqKio8G2KiorE4/FIQUGBVFVVOfs9e/ZssrCwoKNHj5KqqioF\nBQXR6tWrqWXLlhQaGiqyvcTERJo+fTppamqSra0t+fv7U15eHikoKNDdu3c5+0tU+Tu5efOmwHhS\nUpJYOl9LgpiYGNLS0iJDQ0NGu6FVq1akqanJujR0xowZ1KNHD7p06RLNnz+fdHV16ePHj8zx0NBQ\nsrW1Fdc/QYBbt25JzDYbRo0axeR8VdfIELbVZ96+fUvXr1+nGzducC6jrsLc3FxoiW98fDxpaWlx\ntn/37l36559/KCIigm8TF6WlpeTv70/6+vpkZmZGhw8f5mTv5s2bZGBgQJqamiQvL0/6+vrE4/Go\nUaNGnLuujx07lqZPn05ElfIG9+/fp3fv3lG/fv1E1r6qLf9GWPfrhoKseogl4lSVBQAzMzOkpqYK\nnX7lUiZac1mJiHDnzh14enoyywBcOH36NEJCQtC3b1+4ubmhd+/eMDMzg5GREQ4ePPjZbrbCsLOz\nw7x583Dt2jWJVBQAlU3phFVOlZWVoUWLFpztP3nyBKdOnRL6BsamVBsA5syZg7FjxzINNYHKWazZ\ns2djzpw5rCqs1qxZg++//x729vZQV1dHcHAwX6+ooKAgzv1qalJQUICDBw9iz549SElJqVc5C1pa\nWsy1pqmpKbby7K8hbQBU5q95eXlhz549KCsrA1BZ3TNt2jRs2bKFUxVY7969MWjQIMTExDD9yi5d\nuoThw4czFYlsuH//PkaNGoXbt2/zLZtV/e7F8f04ePAgVqxYgeLiYvj6+mLmzJkCfX1ExcvLC8OH\nD8fOnTuhra2Nq1evQlFRET/++CPn9hFbt26Fg4MDLC0t8eHDB0yYMAFZWVnQ09NjGt/WFUnKGUgN\nKQdNDYry8nJatWoVNW/enC+r28fHh69ypiGQmJjIWkm1Oo0aNWIUe1u0aEGJiYlExF70bODAgaSh\noUETJkygf/75hyoqKoiIxDrTcvLkSeratStdv36dsX/9+nXq3r07nThxgpPtyMhIUlNTo/bt25OC\nggLZ2NiQtrY2aWlpcVJSVVFRoYyMDIHxjIwMzrNDb9++pbKyMoHx169f8828cCEqKopcXFxIVVWV\n2rVrR8uWLRM62/Ut8qW3XHG97c6ePZuMjIzo+PHj9OLFC8rLy6Njx46RkZERzZ07l5PtiooKGj16\nNPXu3ZtKSkooOjqa1NXVyd/fn5PdYcOGkbOzM718+ZLU1dUpLS2N4uLiqGvXrnTp0iVOtv/55x/6\n7rvvSFNTk1atWsUnEsgVLS0t5nrU0tJiRPeuXr3KuVKLiKi4uJiCgoJozpw55O7uTrt376bi4mLO\ndr8FZEGLCKxcuZJMTEwoNDSUVFVVmaAlLCyMunfvztl+ZGQkLVmyhKZOnUpTpkzh28RNSkoKqaur\ncyqpVBUAACAASURBVLZjbW3NLE8MHDiQFixYQEREAQEB1KJFC1Y2Hz16RCtXriRjY2Nq2rQpeXh4\nkIKCAp8aJxe0tbVJSUmJ5OTkSElJie9nHR0dvk1UunTpQsuXLyei/1OufffuHY0YMYJ27NjB2mc7\nOzuhAdWJEyfE8t2TBI8fP6bVq1dT69atqUmTJjR37lyxBp+SxMHBgfLz8wXGCwoKOAWfkkRfX58i\nIyMFxs+fP0/6+vqc7X/69IkGDhxIdnZ2pK6uTtu2beNsU1dXlylt1tTUZAKBqKgosrGxYWUzMTGR\n+vbtSyoqKvTTTz9JREVWT0+PMjMziYiobdu2jGJ6eno6p2X3T58+kaurK/Ns4UpERAR9+vSJ+flz\nW0NBlogrAmZmZti1axf69+/PlyCVkZGBHj16ID8/n7VtSXU1rplUSkR4/vw5AgICoK+vzznpdOvW\nrZCXl4eHhwcuXrwIJycnlJeXo6ysDFu2bOE8VXrhwgUEBQXh5MmTMDQ0xJgxYzBmzBh06tSJtc26\nVp8AolegaGhoIDk5GaamptDR0UF8fDzat2+PlJQUODs7Izc3V0RvKwkLC8PPP/+MefPmMUmPV69e\nRWBgIDZs2MAnelYfEuqGDh2K+Ph4DBs2DC4uLnB0dIS8vDwUFRWRkpICS0tLabv4WWrrfP3y5Uu0\naNFCLMKM4kZVVRW3bt0SEPJLS0uDra2tyFUnwpI43717h//9739wcnKCu7s7M872O6ejo4OkpCSY\nmJjA1NQUe/bsgYODA3JycmBtbc2qUkZOTg6qqqqYOXPmZ1WMuSTLDho0CK6urpgwYQJmzZqFW7du\nwcPDAwcOHEB+fj4SExNZ29bW1sbNmzfFoqpds3KtNupzeXlNZEGLCKiqqiIjIwNGRkZ8QUtaWhq6\ndu2K9+/fs7Ytqa7Gwr6ompqa6NevHwICAjiV9wrj0aNHuHHjBkxNTfHdd9+JzW5+fj5CQ0MRFBSE\n1NTUenuBGRgYIDo6GpaWlmjfvj3Wr1+PESNGICUlBT179mT9HflSB+P6pm2hoKAADw8PuLu7o02b\nNsw416Bl/vz5df4sm/yhqge1jY0NoqOj+SqzysvLcfbsWezatUvk4PNrqA/37dsXLVu2RFBQEJOb\n9OnTJ7i5ueHp06ciq/EKK8+umXfC9TvXu3dvLFiwACNHjsSECROQn58PHx8f/PHHH0hKSmKVq2Vs\nbFynkmcu8gM3btzAu3fv4ODggFevXmHy5MmIj4+HmZkZ9u3bx+neN2XKFFhbW4v0Xf8vIUvEFYH2\n7dsjLi5OoCzx6NGjnFu0f/r0CXZ2dpxsCKNmIq6cnJxQOW5x0apVK7Rq1UrsdnV0dDBv3jzMmzdP\n5JbytfHy5Uu8fPlSQIacy0xF9+7dcfnyZVhaWsLJyQkLFizA7du3cfz4cU5loQ0toS4uLg5BQUGw\ntbVFu3btMHHiRIwbN46z3Vu3bvHtJyUloby8nEnavnfvHuTl5VkLBdrY2DD9qaoE2qqjqqqKbdu2\niWzXz88Pffv2ZYKW27dvY+rUqXB1dYWFhQU2btzISMyzZevWrXB0dESrVq3QuXNn8Hg83LhxA0Bl\n7yBR+RrfOR8fHxQVFQGoTAwfNmwYevfuDV1dXRw5coSVTbazmV/i1KlTGDJkCBQVFRlBRgDQ19fH\nmTNnxHYeMzMzrF69GgkJCWIRqMzOzoaZmZnY/JM6UluYaoCcOnWKtLS0aMOGDaSmpkYbN26kadOm\nkZKSEiepfSLJdjWWBFFRUWRhYSG0pPLt27dkaWnJOZFOUty4cYPat28vtBSQazJkTk4Os0ZfVFRE\n7u7uZG1tTaNGjWISlv9LFBUV0d69e6lnz56kqKhIcnJy5O/vLxZJ9c2bN9Pw4cP5ujq/efOGnJ2d\nadOmTaxs5ubm0oMHD4jH49H169cpNzeX2Z49eyY0YbkuGBgY0PXr15n9pUuXUs+ePZn98PBwsrCw\nYGW7OoWFhfTbb7/R7Nmzyd3dnbZt2yaW3/XX5PXr10yCfH1CTk6O6Q5fs82DODE2Nq51Y1NOzePx\nqGXLljRx4kQKCgqiBw8eiN/pr4gsaBGRs2fPUp8+fahRo0akqqpKPXv2pHPnznG26+HhQdra2tSn\nTx+aO3cueXl58W1cCAsLI1tbW1JXVyd1dXXq0qWL0JbtojB8+HDasmVLrccDAgI49SSRJFVBxNWr\nV+nBgwd8D6b6Gljs37+f/vrrL2bf29ubtLS0qEePHvXW55pkZGSQt7c3GRgYkIqKCg0fPpyTvebN\nm9OdO3cExm/fvk3NmjXjZFvcKCsr06NHj5j9nj170urVq5n9Bw8eiCUxXlKsW7eO9u7dKzC+d+9e\nvv5V4iItLY2z3om4adq0KZ06dYqIKgOBqgCmvnPp0iVavXo19e/fn9TU1EhOTo6MjY3Jzc2NDhw4\nQE+ePJG2iyIhy2mpJ3yuUy+Px0N0dDQru9u2bcPPP/+MGTNmoGfPniAiXL58GXv27MHGjRsxZ84c\nVnaNjIxw9uzZWrveZmRkYNCgQXj06BEr+5JEQ0MDt27dktiU6du3b/Hnn38iJycH3t7eaNy4MW7e\nvImmTZuy1oExNzfHzp070a9fP1y5cgX9+/eHv78//vrrLygoKOD48eNi/ldIjvLycpw+fRpBQUEi\naZjURENDAxEREQLLONHR0XB2dha5/UD16f8v+SWqnook1YevXbtWp89V9R1jg7GxMQ4dOiSwhJ2Y\nmIjx48eLfSkpJSUFnTp1qhf5WVX4+flh1apVddLvqU9+V6e0tBRXrlxBTEwMYmJicPXqVXz8+BFm\nZmbIzMyUtnt1Q8pBU4Pi0aNH9PjxY2Y/MTGRPD09adeuXVL06vOYmJgI1ZDZvXs3mZiYsLarrKz8\nWaXerKyseqsu6+zsTH/++adEbKekpDCqmwoKCnxaPhMnTmRtV1VVlR4+fEhElUuJVbbu3LlDenp6\n3B1vgEycOJFatWpFR48epcePH9Pjx4/p6NGjZGxsTJMmTRLZHo/HY6b8xa2nIkn14eqdfCWlAaOs\nrEz3798XGM/JySFlZWVOtoWRnJxcL1Va09PT6fTp08Tj8Wj//v108uRJoRsXRo8eTevXrxcY//XX\nX2nMmDGcbFdRXFxM58+fpwULFpCmpma9/F3XhixoEYFevXpRSEgIERE9f/6cNDQ0qEePHqSrq0sr\nV66UsnfCUVJSEhpcZGVlcbrZmJiY0PHjx2s9fuzYsXo3vVvFq1evaOjQoeTn50d//vmnWPUK+vfv\nT97e3kT0fzotRESXL18mIyMj1nb19fUZMTYbGxsKDg4mIqLs7GxWIn7fAlU5Q8rKysxDW0lJidzd\n3cUqJCYOXr58Sb169SIej0caGhoC106/fv1o6dKlrGxraGiQkZER+fr6UmZmJuXl5QnduGBmZkYH\nDhwQGA8JCZHIdV5fg5Yq/Pz8qKioSCK29fT0KDU1VWA8NTWVmjRpwspmSUkJRUVFkY+PD/Xq1YuU\nlZWpXbt2NHPmTDp48GCDWiKSBS0ioK2tzYgfBQQEkJ2dHRERnTt3jtWF+zV6nVhYWNCvv/4qMP7L\nL79wUsSdO3cuWVlZUUlJicCx4uJisrKyonnz5rG2n5eXRz/++CM1a9aM5OXlmYdS1caFiIgI0tTU\nlMgbqaamJmVnZxMRf9CSm5vLKUicMGECderUiaZOnUpqampMH5iIiAhq3749J58bOu/fv6eUlBRK\nTk6ud8FKTSShPlxUVET79+9ncu1cXFwoOjqaq6t8bNiwgXR1dSkoKIjJ/dq7dy/p6urSunXrxHou\nIvEELfb29hQcHNzglGRrU79OT09nNXvdp08fUlVVJSsrK5o9ezaFhYVxDmKliazkWQRKS0sZHYXI\nyEhmXbtdu3Z4/vy5yPaq9zrR0tISn6PVWLFiBX788UdcvnwZPXv2BI/HQ3x8PP7++28cPHiQtV0f\nHx8cP34cbdu2xdy5c2Fubg4ej4f09HQEBgaivLwcy5YtY23f1dUVjx49wvLly4WK7XHBw8MDEydO\nxPLly9G0aVOx2QUAFRUVFBYWCoxnZmZCX1+ftd3AwED4+Pjg8ePHOHbsGHR1dQFUlvz+73//Y223\noVJWVgYVFRUkJyfDyspKbIJ60dHRmDt3Lq5evQpNTU2+YwUFBbCzs8POnTvRp08fVvZru87ZduoG\nADU1NUyePBmTJ09GdnY2goKCMGnSJCgqKmLKlClYunQp06+KLT///DPevHmD2bNnM/20VFRUsGjR\nIixZskRkezo6Op+9pqt6J3Ghc+fOjCDj2LFjMXXqVE6yAx07dqzzfYiLLIOVlRXCwsKwYsUKvvEj\nR46w0jdKSEhAs2bN4ODggL59+6JPnz5i6/4tDWSJuCLQrVs3ODg4wMnJCYMGDcLVq1fx3Xff4erV\nqxgzZgyePHkibReFkpCQgC1btiA9PZ1pxLhw4ULO7eQfPnwId3d3nDt3jk9wavDgwdixY8dn1Si/\nhIaGBuLi4mBjY8PJx9psV6nWipsZM2bg1atXCA8PR+PGjZGamgp5eXmMHDkSffr0gb+/v9jP+V/F\n1NQUx48fF6uI4YgRI+Dg4AAvLy+hx3/77TdcvHiRtUL11+LJkyeYNGkSYmNj8erVK05BUXXev3+P\n9PR0qKqqok2bNqzF8OqqSi2qInVNysvL8ddff2Hfvn04c+YMzMzM4ObmhokTJ4r8wrJy5Urm5w8f\nPmDHjh2wtLREjx49AFQqVN+9exezZ8/G+vXrWft86tQpjB49GhMmTGCSzKOionD48GEcPXoUI0eO\nFMleUVER4uLiEBMTg4sXLyI5ORlt27aFvb09+vbtC3t7e04vVF8d6U70NCwuXrxI2traJCcnx9cP\naMmSJfWyXX1paSkdOXJEYnoCVbx584auXbtGiYmJfJoZXLCwsJBYQ71JkybR7t27JWK7oKCAevbs\nSdra2iQvL0+GhoakqKhIffr04bR0ERsb+9mtvvL48WN69+6dwPinT584+x0UFERDhgyh169fc7JT\nnVatWn22x1V6ejoZGhqK7XzipLS0lI4dO0ZOTk6kqqpKw4cP59wA9Fvi5cuXtHr1alJRUSFFRUVy\ndnamqKgoVramTp1KPj4+AuMrVqwQS6+4v/76i+zs7EhNTY10dXXJwcGB6fHGlcLCQjpz5gx5e3tT\nly5dSElJqUEtMctmWkSkvLwchYWF0NHRYcZyc3OhpqYm0KdEFF68eIGFCxciKioKL1++RM0/C9sS\nuuqtBxoS58+fx+bNm7Fr1y5OMzbCWLt2Lfz9/eHk5ARra2sBhWAuPUmqiI6Oxs2bN1FRUYFOnTph\nwIABnOwJk/GvPlVd30osnz9/DmdnZyQlJYHH48HFxQWBgYFQV1cHUPl9b968OSe/O3bsiOzsbJSW\nlsLIyEhAOZTNFL2Kigru3LlTazl8dnY2rK2tBZSmpUlqair27duHgwcPQk9PD66urpg8ebJYlz4d\nHBw+uzTCVpLha3Ht2jXs27cPhw8fhpaWFlxdXfH8+XMcPHgQ7u7u2LRpk0j2tLS0cOPGDb4WFQCQ\nlZUFW1tbFBQUiNN9sVJRUYHr16/j4sWLuHjxIuLj4/Hhw4d6dw+pDVlOi4jIy8ujrKwM8fHx4PF4\naNu2rVgeqpLK4ejSpQtSU1MbXNAybtw4FBcXw9TUFGpqagKBBRs9iyr27NkDdXV1xMbGIjY2lu8Y\nj8cTS9DSr18/Af2Qp0+fstZpqdmMs7S0FLdu3cLy5cuxdu1a1n5KisWLF0NeXh6JiYl4+/YtlixZ\ngr59++LChQtMwM/1fUnUafK60KJFC9y+fbvWoCU1NRXNmjUT+3m50LFjRxgaGsLd3R09e/YEUKlz\nUpNBgwaxPkfNZdrS0lIkJyfjzp07nJdwJMXLly9x4MAB7Nu3D1lZWRg+fDiOHDmCwYMHM/fXsWPH\nYuTIkSIHLaqqqoiPjxcIWuLj46GiosLZ9yqtp/v372PhwoWctJ4qKipw48YNZnno8uXLKCoqQosW\nLeDg4IDAwMDP6oTVN2QzLSJQVFSEefPmISQkhOlXIy8vj0mTJmHbtm1QU1NjbVtSORwnTpzA4sWL\n4e3tLbSPRdu2bcV6PnHxpTXv+nqjFEZeXh7Wrl2LPXv2iP0N/dKlS/Dy8kJSUpJY7XKlRYsWOHHi\nBCNo9vHjR4wbNw4PHz5EVFQUSktLOc+0SIJ58+YhJiYG169fF3j4lJSUoGvXrnBwcMBvv/3G6Txp\naWl49OgRk9RahaiidcCXm2kCkuvi6+fnh/fv34v80P8aKCkpwdTUFG5ubnB1dRWat1FYWAhnZ2eR\nm0lu2LABfn5+mDZtGl/X9aCgIKxYsQKLFy9m7XdqaioGDBgALS0t5ObmIjMzEyYmJli+fDkePnyI\nkJAQkexpamqiqKgIzZo1Q9++fdG3b184ODhIJKfvqyDNtamGxowZM8jExITOnDlDBQUFVFBQQH//\n/TeZmprSrFmzONmWVA6HsJLeKhGq+qyD8DX4+PEjZWRkUGlpKWdb+fn5NGHCBNLT06NmzZpRQEAA\nlZeX0/Lly0lVVZVsbW3p0KFDYvCan7S0tHqp09KoUSO6d+8e31hpaSmNHDmSOnToQKmpqfXy+5eX\nl0fNmzcnQ0ND+uWXX+jkyZMUERFBGzZsIENDQ2revDmnctGcnBzq0KEDc/3VvC7Z8OHDhzptkiAr\nK4t0dHQkYpsrku59FhYWRnZ2dqSjo0M6OjpkZ2dHYWFhnO2KW+vp999/p8zMTM5+1RdkQYsI6Orq\n0sWLFwXGo6OjOauSnjt3jgYNGiT2ZlYZGRmf3RoCxcXFTJBYtXGhqKiI3NzcSF5enuTl5Zmbwrx5\n84QqUdYFd3d3atmyJS1YsIBpxjhkyBCxJdClpKTwbcnJyfTPP/+Qvb09oxdUn7C2thaqOlwVuLRq\n1YrVQ1pHR4devXpFRJW6SVUPDGEbW3Jzc2nIkCECQcWQIUM4X5/Dhg0jZ2dnevnyJamrq1NaWhrF\nxcVR165d622D0c8REhIilj5P4nyBqMmLFy/o0qVLFBcXJ/GiBHEgKa2nbwVZTosIFBcXC01ua9Kk\nCYqLi0W2V1OroKioSGw5HG5ubggICIC5ubnIftUHioqKsGjRIoSHh+P169cCx7lMdS9ZsgQpKSmI\niYmBo6MjMz5gwAD4+vqymtr9+++/sW/fPgwYMACzZ8+GmZkZ2rZtK7YSZxsbG/B4PIE8kO7duyMo\nKEgs5xAnQ4YMwR9//IHRo0fzjSsoKODo0aMYPXo0K4mArVu3QkNDAwAkVj5uZGSEM2fOID8/H9nZ\n2SAitGnThi/5ni1XrlxBdHQ09PX1IScnBzk5OfTq1Qvr16+Hh4cHbt26JYZ/gfj5/vvv+faJCM+f\nP8eNGzewfPly1naLi4sxb948Zjn43r17MDExgYeHB5o3b85pmaWwsBBz5szBkSNHmPuFvLw8xo0b\nh8DAQLFoYyUlJSE9PR08Hg+Wlpbo2LEjZ5uS0nr6VpDltIhA//79oauri5CQEGa9u6SkBJMnT8ab\nN28QGRkpkr26ahUAoudwyMvL4/nz55wqmqTJnDlzcPHiRaxatQqTJk1CYGAgnj59il27dmHDhg1w\ncXFhbdvIyAhhYWHo3r07NDQ0kJKSAhMTE2RnZ6NTp05CbxhfQlFREQ8fPkTz5s0BVAp+Xbt2DVZW\nVqz9rM7Dhw/59uXk5KCvry+WpD9JUFZWhuLiYgGBtirKy8vx5MmTBpcgzhUdHR0kJSXBxMQEpqam\n2LNnDxwcHJCTkwNra2tWLz9fgylTpvDtV33/+vXrxynB19PTE5cvX4a/vz8cHR2RmpoKExMTnDp1\nCr6+vpyCuLFjxyI5ORnbtm1Djx49wOPxkJCQAE9PT3To0AHh4eGsbb98+RLjx49HTEwMtLW1QUQo\nKCiAg4MDjhw5wim4kGk9fQFpTvM0NG7fvk0tWrQgXV1d6tevH/Xv3590dXWpRYsWdOfOHWm7x0f1\n5m8NEUNDQ2YpTkNDg+mfFBISQkOGDOFkW1VVlZlyrT79mpycTJqamqxsysnJ8bWqV1dXF9pgToZ4\nKS8vp8zMTIqLi2sQ2jW9evVitFP+97//kaOjI8XHx9OkSZMalFaGuGjVqhVduXKFiPivxaysLNLQ\n0OBkW01NjeLi4gTGL126RGpqapxsjx07ljp37syn6XP37l2ytbWl8ePHc7ItKa2nbwXZ8pAIWFlZ\nISsrC6GhocjIyAARYfz48XBxcYGqqion22fOnIG8vDwGDx7MN37+/HmUl5djyJAhItsUp/T91+bN\nmzdo3bo1gMrs96rlsV69esHd3Z2T7S5duuDvv//GvHnzAPzf72n37t2MuqWoEBFcXV0ZhdAPHz5g\n1qxZAtVax48fF8luYmIi3rx5w/f3DwkJga+vL4qKijBy5Ehs27aNtTKptHj8+DF8fX05LW1dvXoV\nEyZMwMOHDwWWzSRVLcMVHx8fFBUVAQDWrFmDYcOGoXfv3tDV1UVYWJiUvRMkPz8foaGhmDx5stC2\nBiEhIUKP1ZVXr14JnQ0uKirifP/S1dUVugSkpaXFeanv7NmziIyMhIWFBTNmaWmJwMBATjNPQOX9\nLj4+XuxaT98KsqBFRFRVVTF9+nSx2128eDE2bNggMF5RUYHFixezClratm37xQufi96JJDExMUFu\nbi6MjIxgaWmJ8PBwdO3aFadPn4a2tjYn2+vXr4ejoyPS0tJQVlaGgIAA3L17F1euXBHQbakrNZfv\nfvzxR04+VuHn54e+ffsyf//bt29j6tSpcHV1hYWFBTZu3IjmzZvDz89PLOf7Wrx58wbBwcGcgpZZ\ns2bB1tYWf//9t9j7U0mK6i8lJiYmSEtLw5s3b77Yi0dabN++HampqUyAXx0tLS3ExcWhsLCQdZ8x\nSbxAVOHj44P58+cjJCSE0dbJy8uDt7c3pzwcoPK+XDPvEKhcJq6Sw+CKMK0nUTl16lSdP8um3F4a\nyHJavsDX+qOrqqoiPT1dQKguNzcX7du3Z97O6oqcnBz8/f2/mGxWX/VOtm7dCnl5eXh4eODixYtw\ncnJCeXk5ysrKsGXLFnh6enKyf/v2bWzatAlJSUnMm8yiRYtgbW0tpn+BeGjWrBlOnz4NW1tbAMCy\nZcsQGxuL+Ph4AMDRo0fh6+uLtLQ0abopwJeum/v372PBggWcZkMaNWqElJSUWoXg/mtUVFRgx44d\nCA8PF6oB8+zZM5Ft2tjYYPPmzejfv7/Q41FRUVi4cCHr3JOEhAQ4OjrCxcUF+/fvx8yZM/leIDp3\n7iySvZpNDbOysvDx40e0atUKAPDo0SMoKyujTZs2nJoaOjs74+3btzh8+DCTx/b06VO4uLhAR0eH\nVW8qScyq1tTwqZnMX59VtWtDNtPyBeqqusl1OlpLSwv3798XCFqys7MFlhjqyvjx4xtsIm71hnUO\nDg7IyMjAjRs3YGpqKpYGedbW1iIlQkuL/Px8voq12NhYvoqnLl264PHjx9Jw7bOMHDlSaLVTdbjO\nLHTr1g3Z2dmyoOX/s3btWmzbtg0eHh5Yu3YtFi5ciAcPHuDMmTNYunQpK5s5OTkCqq/VadOmDXJy\ncti6DDs7O1y+fBmbNm2Cqakpzp8/j06dOuHKlSusXiAkoZIsjO3bt8PZ2RnGxsYwNDQEj8fDo0eP\nYG1tjdDQUFY2JTGrWn3WJzIyEosWLcK6dev4EpN9fHywbt06Vj5LBSnm08ioxvTp08na2pqpzyeq\nTEbr0KEDTZ06VWR7cnJyDToRV9zU1Hn53FafaNWqFZNU+vHjR1JVVaXIyEjmeGpqar0U92revPln\nm/XdunWLlU5Lda2a48ePk6WlJe3bt49u3LghoGXzX8PU1JQiIiKIqDKptepesmnTJpo4cSIrm1pa\nWkyirDCuXLlCWlparGx/C5w/f55+++03CggIoAsXLnCyZWBgQNevX2f2ly5dSj179mT2w8PDycLC\ngrX99u3b15qY3K5dO9Z2vzaymZZ6wsaNG+Ho6Ih27dqhZcuWACrby/fu3ZuVRDZ9A6t+165dQ0xM\nDF6+fCmwTrxlyxaRbGlra9f5zb4+TZM6Ojpi8eLF+OWXX3Dy5Emoqamhd+/ezPHU1NR6KcfduXNn\n3Lx5s9Y33y/NwtSGML0aNzc3Abv1NRFXkjx79oxpA9KoUSOmdH/UqFFYvXo1K5sdO3bEyZMnGan6\nmpw4cYKzNklFRQWys7OFXud9+vThZFvSDBw4EAMHDhSLLUnPqubk5NSamJybm8va7tdGFrTUgejo\naMydOxdXr14VmkFvZ2eHnTt3crrAtLS0kJCQgAsXLiAlJQWqqqro0KEDa5viSgaTFuvWrYOPjw/M\nzc3RtGlTvoCDzbJC9d4iubm5WLx4MVxdXZlkvytXriA4OBjr16/n7rwYWbNmDb7//nvY29tDXV0d\nwcHBUFJSYo4HBQVxrlaQBN7e3p/NwzIzMxO53wsAPHjwgItbUufSpUuws7ODggL/rbesrAwJCQmc\n7iEtW7ZEXl4eWrVqBVNTU0RHR6Njx45ITk4WmjRaF+bOnYvx48ejZcuWcHd3h7y8PIDKwH7Hjh3Y\nunUrDh06xNrnhlYBVlJSgqioKAwbNgxApVDlx48fmePy8vJYvXo1K/2kpk2b4sGDBzA0NMSnT59w\n8+ZNrFy5kjn+7t071n9HoDLo+emnnxAaGsqXmLxgwQKmR1iDQKrzPA2E4cOH05YtW2o9HhAQQCNH\njvyKHn37NGnShPbt2ycR2/369RPaB+jgwYNkb28vkXNy5e3bt1RWViYw/vr1a/r48aMUPJIeU6ZM\nocLCQmm7wYralm3//fdfzr2YvLy8aNWqVUREdOjQIVJUVCQrKytSUVEhLy8v1naXLl1KPB6PNDU1\nycbGhjp27EiampokJydHixYt4uTzd999Rz/88AOlpaVRfn4+vX37lm+rb/z+++80bNgwZl9dkOS9\nJQAAIABJREFUXZ26detGffv2pb59+5KBgcFnnxWfY8aMGdSjRw+6dOkSzZ8/n3R1dfmu7dDQULK1\ntWXte1ZWFllZWZGioiKZmpqSqakpKSoqUvv27RkdrIaALGipA61ateITEapJeno6GRoasrJ99epV\nOnPmDN9YcHAwGRsbk76+Pk2fPl1izc7qMwYGBgIN98SFqqqqUNuZmZmkqqoqkXPKEB8NOV+Lx+Px\niRBWkZmZyVlMrSYxMTG0du1asTTxS0xMJA8PDxo6dCgNGTKEPD09KTExkbNdNTW1BvXA7N27Nx0/\nfpzZry6IR0R04MAB6t69OyvbL1++pF69ehGPxyMNDQ2+8xBVvmwtXbqUneP/n4qKCjp37hwFBASQ\nv78/nT9/nioqKjjZ/NrIlofqwIsXLz47LaegoIBXr16xsv2t6nBwxcvLC4GBgRKRrDY0NMTvv/+O\nzZs3843v2rULhoaGYj+fDPFCDTBfq6p3D4/H4xMhBCqXWlJTU2FnZyfWc9rb28Pe3l4strp27SqR\nJYSGVgF27949tG3bltlXUVHhKyvu2rUr5syZw8q2vr4+4uLiUFBQAHV1dWYproqjR49CXV2dneP/\nHx6Ph0GDBtXLJeW6Igta6kCLFi1w+/btWi+s1NRUZo1QVJKTk/mS5I4cOYJu3bph9+7dACofsL6+\nvv+5oGXhwoVwcnKCqakpLC0tBYJGUZVlq7N161aMHj0a586dYxIMr169ipycHBw7doyT3zK+DvVR\niO1zVCVAEhE0NDT4FLSVlJTQvXt3iYhW1kdSU1OZn+fNm4cFCxYgLy8P1tbWAtd5hw4dWJ+nvLwc\n+/fvR1RUlNAk3+joaJFtFhQU8OUj1XxZraio4MtxYUNt2lqNGzfmZBeoTO7dtGkT0+TRwsIC3t7e\nfMn99R1Z0FIHhg4dihUrVmDIkCECCVYlJSXw9fVlErNERdIZ47WJfPF4PKioqMDMzIyRy69PzJs3\nDxcvXoSDgwN0dXXF+pAaOnQo7t27h507dzLtGJydnTFr1izZTEsDoaGpPe/btw8AYGxsjIULF7LW\nXvoW+FoVYJ6enti/fz+cnJxgZWUllntIy5YtcefOHZibmws9npqaylR/1jdCQ0MxZcoUfP/99/Dw\n8AARISEhAf3798f+/fsxYcIEabtYJ2SKuHXgxYsX6NSpE+Tl5TF37lyYm5uDx+MhPT0dgYGBKC8v\nx82bN/mCj7piZGSEAwcOoE+fPvj06RO0tbVx+vRpRoHy9u3bsLe3Z30DlpOTE1peWv3G0KtXL5w8\neZJzPw5xoqGhgSNHjsDJyUnarsioZzR0tef/OjU7ln8OLl3A9fT0EBISgqFDh7K2URNPT09ERkYi\nKSlJ6Ausra0tBgwYgICAALGdU1xYWFhgxowZfMKdQKV8xO7du5Geni4lz0RDFrTUkYcPH8Ld3R3n\nzp1jAgAej4fBgwdjx44dAkq2dWXmzJm4ffs2o8MRHByMZ8+eMWWtBw8ehL+/P65fv87KflRUFJYt\nW4a1a9cya9LXrl2Dj48Pli9fDi0tLcycORPdunXD3r17WZ1DEhgZGeHcuXNo166dROzHxcVh165d\nuH//Po4ePYoWLVrgwIEDaN26NXr16iWRc4rKt9g3RBzIyckhLy+vQak915SXrw0u0vINEUmWgDdv\n3hwxMTF8OShcefHiBWxsbKCkpIS5c+cyM34ZGRnYvn07ysrKcOvWLVYvsJJGWVkZd+/eFUhzyM7O\nhpWVFT58+CAlz0RDtjxUR4yMjHDmzBnk5+cjOzsbRIQ2bdpwnp2QtA6Hp6cn/vjjD74kv/79+0NF\nRQUzZszA3bt34e/vzzc9Wx/w8/ODr68v9u3bBzU1NbHaPnbsGCZOnAgXFxfcvHmTWYN+9+4d1q1b\nhzNnzoj1fGz5Wi0kGhoNLZ8F+Hry8pKkrKwMMTExyMnJwYQJE6ChoYFnz55BU1OTdYKog4MDnj9/\nLhCAFhQUwMHBgdP3esGCBQgICMD27dvF9p1p2rQpEhIS4O7ujsWLF/O9wA4cOBA7duyolwELUJkf\nGRUVJRC0REVFNahlcdlMSz2htozxN2/eQF1dnS+QEQVVVVVcv34dVlZWfOO3b99G165dUVJSgocP\nH8LCwgLFxcWs/Rc3HTt2RE5ODogIxsbGAgl6XN5IO3bsCC8vL0yaNAkaGhpISUmBiYkJkpOT4ejo\niLy8PK7uy5AgDXGmRVKI0t2aTcPEKh4+fAhHR0c8evQIHz9+xL1792BiYoKffvoJHz58wO+//87K\nrpycHF68eAF9fX2+8Xv37sHW1pZR9a0rVVVaVURHR6Nx48Zo3769WJP5gcp7c3Z2NoBKsURxJMpK\nkp07d+Knn36Cm5sb7OzswOPxEB8fj/379yMgIAAzZ86Utot1QjbTUk+QVMZ4586d4e3tjZCQEObG\n8OrVK/z888/o0qULgMpOqPUteUySb6aZmZlCp501NTXx9u1biZ1Xhnho6GrP4uRrVRV6enrC1tYW\nKSkp0NXVZcZHjRqFadOmiWxPUiXgNe+jo0aNEtlGXWncuHGDUpJ1d3eHgYEBNm/ejPDwcACVeS5h\nYWFwdnaWsnd1Rxa0fOPs3bsXzs7OaNmyJV83UhMTE0RERAAA3r9/j+XLl0vZU358fX0lZrtZs2bI\nzs4WyEOKj4+HiYmJxM7LlaKiIsTGxuLRo0f49OkT3zEPDw8peSVDmnytt+P4+HhcvnxZYMbXyMgI\nT58+FdmepErAq6q0ZAhn1KhREg3kvgayoOUbx9zcHOnp6Th37hzu3bsHIkK7du0wcOBARhTpW1hv\nF4WZM2fC09MTQUFB4PF4ePbsGa5cuYKFCxdixYoV0nZPKLdu3cLQoUNRXFyMoqIiNG7cGP/++y/U\n1NTQpEkTWdDyH6Vm8Po52C4xA5WzW8LyS548eQINDQ2R7X2NEvB+/frh+PHj0NbW5hsvLCzEyJEj\nWem0fAskJSUxOi2WlpacG15+bWQ5LTLqDTo6OnVen+eqwbFs2TJs3bqVyZhXVlbGwoULWXfDlTR9\n+/ZF27ZtsXPnTmhrayMlJQWKior48ccf4enpKbCWL+O/QZWkQV3gktQ6btw4aGlp4Y8//oCGhgZS\nU1Ohr68PZ2dntGrVql7OcNSW+/Ty5Uu0aNECpaWlUvJMOrx8+RLjx49HTEwMtLW1QURMwvORI0cE\n8orqK7Kg5T9AVFRUraqQQUFBUvJKkODgYObn169fY82aNRg8eDBfJ+Zz585h+fLlAloDbCguLkZa\nWhoqKipgaWnJWSJbkmhrayMxMRHm5ubQ1tbGlStXYGFhgcTEREyePBkZGRnSdlGGFDh37lydPzt4\n8GDW53n27BkcHBwgLy+PrKws2NraIisrC3p6erh06VK9SoquUty1sbFhEnGrKC8vx9mzZ7Fr1y7k\n5uZKyUPpMG7cOOTk5ODAgQOwsLAAAKSlpWHy5MkwMzPD4cOHpexh3ZAFLd84K1euxKpVq2Brayu0\n0uDEiRNS8uzzjB49Gg4ODpg7dy7f+Pbt2xEZGYmTJ09K5Lx//vknxowZIxHbXNDX18fly5fRtm1b\nmJub47fffsPgwYORkZGBTp061avKLxn8/Pbbb3X+bH1e5ispKcHhw4dx8+ZNVFRUoFOnTnBxceHL\nR6kPVJ99EvZ4U1VVxbZt2+qdzIOk0dLSQmRkJFOAUcW1a9cwaNCgBlOEIAtavnGaNWuGX3/9FRMn\nTpS2KyKhrq6O5ORkAU2BrKwsdOzYEe/fv2dlt6ysDJmZmVBUVOQTnYqIiMCKFSuQkZHBuXeIJBg0\naBBcXV0xYcIEzJo1C7du3YKHhwcOHDiA/Px8JCYmSttFGbVQ1zYZPB4P9+/fF8n2vXv30KZNG/B4\nPNy7d++znxWnyFp95uHDhyAimJiY4Nq1a3zLHkpKSmjSpImAtMR/AQ0NDcTFxcHGxoZv/NatW7C3\ntxe5vFxayBJxv3E+ffok9u6xXwNdXV2cOHEC3t7efOMnT57kK7kUhbS0NAwbNoyREXd2dsbOnTsx\nduxYpKSkYNq0afjrr784+y4J1q1bh3fv3gEAVq9ejcmTJ8Pd3R1mZmb1Mp9Axv/x4MEDidlu164d\nk7fRrl07ofkt4ujjA1QGSDExMUKXmUVJYG/cuDHu3bsHPT09uLm5ISAggFUyb20YGRmhtLQUkyZN\nQuPGjTm1AviW6NevHzw9PXH48GE0b94cAPD06VN4eXkxbWMaArKZlm+cRYsWQV1dvd6VNH+J/fv3\nY+rUqXB0dGRyWq5evYqzZ89iz549cHV1FdnmiBEjUFRUBC8vLxw8eBBhYWEwMzPDjz/+CC8vL7He\nOGXI+BpkZmYyUvKZmZmf/WxtTf7qwu7du+Hu7g49PT0YGBjwBUc8Hk8ksUd1dXWkpqbCxMQE8vLy\nyMvLk0gSqI6ODpKSkuq1jMHX5PHjx3B2dsadO3f45C+sra0RERFR77S6akMWtHzjeHp6IiQkBB06\ndECHDh0EVCG3bNkiJc++TGJiIn777Tekp6eDiGBpaQkPDw9069aNlT0DAwOcOXMGnTp1wtu3b9G4\ncWPs2rWLlR6EDBl1Zf78+XX+LJvrMS8vDwYGBp/9DNdcLSMjI8yePRuLFi1ibaOKgQMH4sWLF+jc\nuTOCg4Mxbty4WvNiuBQKTJkyBdbW1iL9/v8LXLhwgelub2lpiQEDBkjbJZGQLQ9946SmpjJrmHfu\n3OE7Vl97uJSVleHgwYMYPHgwDh48KDa7VaWOQGU1jpqaGuzt7cVmX5K0bt36s38vUXMhZHw9bt26\nVafPsb0eBw8ejLi4OGhqago9fuzYMbi4uHAKWvLz8/HDDz+w/v+rExoaiq1btyInJwc8Hg8FBQUS\nadZnZmaG1atXIyEhAZ07dxbQgqnPSc+SZODAgRg4cKC03WCNbKZFRr1ETU0N6enpYl2PrjkVramp\niZSUlDonSkqTmq3uS0tLcevWLZw9exbe3t5YvHixlDyTIW169uwJOTk5nD9/XmDG4sSJExg3bhxW\nrlyJJUuWsD7H1KlT0aVLF8yaNYuru3y0bt0aN27cYJ2n9iXbtcEm6bmhUlJSgqioKAwbNgwAsGTJ\nEr5iA3l5eaxevRoqKirSclEkZEHLf4gnT56Ax+Mxsw31GQcHB3h6eopVrVdOTg5aWlrMG+3bt2+h\nqanJKANXwVW47msSGBiIGzduyJJx/8MUFBSgT58+aNGiBU6dOgUFhcoJ9JMnT2L8+PHw8fGBj4+P\nyHarl2oXFRVhy5YtcHJygrW1tcAy83911qIhsGvXLvz11184ffo0gMoqovbt2zMBbkZGBn7++Wex\naF99DWRByzdORUUF1qxZg82bNzNlwhoaGliwYAGWLVsm8MCuLxw9ehSLFy+Gl5eX0KndDh06iGyz\nunjd55g8ebLItqXF/fv3YWNj02DKFWUA169fx9GjR4X2kGLbeTgvLw+9e/dGly5dcOjQIZw6dQo/\n/PADli5dyrqPlyRLtasTGxuLTZs2MdLyFhYW8Pb2Ru/evVnbrEnVY66+LolLkj59+sDLy4vpOVS9\nsz1QuVwXGBiIK1euSNPNukMyvmkWL15M+vr6tGPHDkpJSaHk5GQKDAwkfX19Wrp0qbTdqxUejyew\nycnJMf+VUckvv/xCRkZG0nZDRh05fPgwKSoqkpOTEykpKdGwYcPI3NyctLS0yNXVlZPt+/fvU4sW\nLWjIkCGkoqJCy5cvF5PXkuPAgQOkoKBAY8eOpYCAAPL396exY8eSoqIiHTx4kLP94OBgsrKyImVl\nZVJWViZra2sKCQkRg+cNh6ZNm9KdO3eYfT09PXrw4AGzn5mZSZqamlLwjB2yoOUbp1mzZhQRESEw\nfvLkSWrevLkUPKobubm5n93+a9jY2FDHjh2ZzcbGhgwMDEheXp527dolbfdk1BFra2vavn07ERGp\nq6tTTk4OVVRU0PTp02nFihWsbGZmZjLbsWPHSFlZmcaNG8c3npmZycnvlStXUlFRkcB4cXExrVy5\nkrXddu3a0ZYtWwTGN2/eTO3atWNtt8qGmpoa/fzzzxQREUEnT54kb29vUlNTE3rObxUVFRXKyMio\n9Xh6ejopKyt/RY+4IVse+sZRUVFBamqqgBpmZmYmbGxsUFJSIiXPZIjCypUr+fbl5OSgr6+Pvn37\nol27dlLySoaoNGrUCHfv3oWxsTH09PRw8eJFWFtbIz09Hf369cPz589FtlmzaSLVWAohMYjLycvL\n4/nz5wI9hl6/fo0mTZqwtq2srIy7d+8KKF9nZ2fDysqKU1VR69atsXLlSkyaNIlvPDg4GH5+fhIV\n/atPtGnTBhs2bMDo0aOFHg8PD8fSpUuRnZ39lT1jh6zk+Rvnu+++w/bt2wX6n2zfvh3fffedlLyq\nO2lpaULX/keMGCElj6QD27wEGfWLxo0bM8rGLVq0wJ07d2BtbY23b9+y7h+Vnp4uTheFUhX41CQl\nJYWvIaGoGBoaIioqSiBoiYqKgqGhIWu7APD8+XOhauB2dnasgsOGytChQ7FixQo4OTkJVAiVlJRg\n5cqVcHJykpJ3oiMLWr5xfv31Vzg5OSEyMhI9evQAj8dDQkICHj9+jDNnzkjbvVq5f/8+Ro0ahdu3\nb4PH4wm8PXKVJG9o3Lx5E4qKirC2tgZQ2Stp3759sLS0hJ+fH5SUlKTsoYy60Lt3b1y4cAHW1tYY\nO3YsPD09ER0djQsXLrCWUueidPsldHR0wOPxwOPxGOXdKsrLy/H+/XtOZdALFiyAh4cHkpOTYWdn\nBx6Ph/j4eOzfv1+gzF9UzMzMmFmE6oSFhaFNmzacbDckli5divDwcJibm2Pu3LnM3zEjIwPbt29H\nWVmZwO+oPiNbHvoP8OzZMwQGBvKpIM6ePZvpP1EfGT58OOTl5bF7926m8dnr16+xYMECbNq0iVNl\nQWpqaq3VRydPnhRrmbW46NKlCxYvXozRo0fj/v37sLS0xPfff4/r16/DyckJ/v7+0nZRRh148+YN\nPnz4gObNm6OiogKbNm1CfHw8zMzMsHz5cujo6EjbRT6Cg4NBRHBzc4O/vz+0tLSYY0pKSjA2Nmba\nbLDlxIkT2Lx5MzNjVFU95OzszMnusWPHMG7cOAwYMAA9e/ZkAqKoqCiEh4cz1TT/BR48eAB3d3dc\nuHCB7wVw4MCB2LFjR8NqdSClXBoZX4HS0lLy8/OjR48eSdsVkdHV1aWUlBQiItLU1GQSyaKiosjG\nxoaTbQMDA8rJyREY//PPP0lNTY2TbUmhqalJ2dnZRES0YcMGGjRoEBERxcfHU8uWLaXpmoz/ADEx\nMVRaWiptN0Tmxo0b5OLiQp06daKOHTuSi4sL3bx5U9puSY3Xr19TYmIiJSYm0uvXr6XtDivqp0iH\nDLGgoKCAjRs3NsillPLycqirqwMA9PT08OzZMwCVPVC+1BjuS7i7u6N///5869phYWGYNGkS9u/f\nz8m2pCAiprNuZGQkhg4dCqAyJ+Dff/+Vpmsy6sCzZ8+wcOFCoXo6BQUF8Pb2xosXL6TgWd2wt7dn\nROsaEp07d0ZoaCiSkpJw8+ZNhIaGomPHjtJ2S2o0btwYXbt2RdeuXTnlIkkTWdDyjTNgwADExMRI\n2w2RsbKyQmpqKgCgW7du+PXXX3H58mWsWrWK81TmihUrMGLECAwYMABv3rzBoUOHMGXKFISEhIit\nv4q4sbW1xZo1a3DgwAHExsYyiXMPHjxA06ZNpeydjC+xZcsWFBYWCu0PpKWlhXfv3tXr5qUyZNQX\nZDkt3zi7du2Cn58fXFxchCrL1tcqnHPnzqGoqAjff/897t+/j2HDhiEjIwO6uro4cuQI66TF6kyc\nOBGJiYl4+vQpDh06xHkNXZKkpqbCxcUFjx49wvz585lqonnz5uH169c4dOiQlD2U8TmsrKzw+++/\no1evXkKPJyQkYPr06bh79y7ncxUUFCArKws8Hg9t2rSptZHit0rNEnBh8Hg8lJWVfSWPZIgTWdDy\njfM5mX6u2g1fmzdv3jDVDKJy6tQpgbHS0lJ4eXlh0KBBfMFbfQ3khPHhwwfIy8sL9IKRUb9o1KgR\n0tPT0apVK6HHHz16BAsLCxQVFbE+x8ePH+Hl5YU9e/YwD2RFRUVMmzYNW7ZsgbKyMmvbDYmIiIha\njyUkJGDbtm0gIplGVUNFmgk1MmSIQnl5OZ06dYqcnZ1F/n+FtQWorVWADBniRldXl2JjY2s9Hhsb\nS7q6upzOMXv2bDIyMqLjx4/TixcvKC8vj44dO0ZGRkb/r707j4qy7N8Afs2MuLDviIqsomK4oFaa\nMoO54BKuZakpZanlXq6vpuJRS3PX8lV7NdFU1MxXX03cGAQEAVFQcAEUUIpcWET2ZX5/eJxfBG4z\nwPMMXJ9zOId5Hs49Fx2kL/d9P99bNWXKFI3HLSkpUclkMtXVq1e1yvciRUVFqhs3btTYZt/r16+r\nhgwZopLJZKqxY8eqUlNTa+R9qOZxT0sdpSvdDV9FYmIi5s+fjxYtWuCDDz7QaIzy8vJX+hDbzJNU\nKoVMJqv0YWZmhrffflvjA/aodr311lvYvXv3c+/7+/vjzTff1Oo9Dh48iP/85z8YOnQorK2tYWNj\ng2HDhmH79u0ICAjQeNwGDRrA3t6+Rv5t5OfnY/z48dDX10e7du2QlpYG4Omp0d99953W4//xxx/4\n/PPP0b59e5SWluLy5cvYtWvXc2e8SPx0bzs4vRJXV1c0b94cXl5e6g8HBwehY72ygoICHDhwAP/5\nz38QERGBsrIyrFu3Dp9++qn6qaL64LfffqvyenZ2NiIjIzFmzBjs2rVLtBuI6alZs2ahT58+MDEx\nwezZs9Wbp//66y+sWrUKP//8M06dOqXVe+Tm5qJ58+aVrjdv3lx9wrumFi5ciPnz52PPnj3V+tTJ\n/PnzERsbC6VSCW9vb/X13r17Y/HixZg3b55G4+bk5GDFihXYtGkTOnbsiLNnz1brqdEkHO5pqaNC\nQkIQHBwMpVKJ8PBwFBYWomXLlujVq5e6iKnqF5zQIiMj8dNPPyEgIACurq4YM2YMPvzwQ7Ro0QKx\nsbFwc3Orlvc5e/Yszp49i/v376sfJX5mx44d1fIeteGHH36Av78/Ll68KHQUeomtW7di+vTpKCkp\ngbGxMSQSCXJycqCnp4d169bhiy++0Gp8hUKBFi1aYMeOHeoOycXFxfj000+Rnp6OoKAgjcfu1KkT\nkpKSUFJSAnt7+0ob+mNiYjQa197eHgEBAXj77bdhZGSE2NhYODk5ISkpCR4eHlU+Iv4yq1atwsqV\nK9G0aVOsWLFC1Bvs6fWxaKkHSkpKEB4eDqVSCaVSiYiICBQVFcHFxUXrnifVrUGDBpg6dSomTZpU\noT25np5etRUtfn5+WLp0Kbp06QJbW9tKG3ufN7shRomJiXjzzTeRlZUldBR6Benp6Thw4ACSkpKg\nUqng6uqKESNGoEWLFlqPffnyZXh7e0MikaBz586QSCSIjo4GAJw8eRIdO3bUeOx/Htj5T5qejaWv\nr49r167BycmpQtESGxsLT09P5OTkvPaYUqkUTZo0Qe/evSGTyZ77dVxa1U0sWuqRgoIChIaGIjAw\nENu3b8eTJ09Et4ejb9++iIiIwHvvvYePP/4Y/fr1g0QiqdaixdbWFqtWrcLHH39cDYmFFRcXh379\n+tWrA+Do+XJzc/Hzzz9XOLJj3LhxMDIyEjpaleRyOUaMGIGpU6fCyMgIcXFxcHR0xJQpU5CUlIST\nJ0++9pi+vr6v9IThzp07NYlMAuOeljqssLAQFy5cQFBQEJRKJaKiouDo6Ai5XI4tW7ZALpcLHbGS\nU6dO4e7du9i5cye++OILFBQUYOTIkQCg0aPOVSkuLq7y9FddtH379nrd4ZOATz/9FBs2bICRkRGM\njIwwderUGnmf7OxsHDp0CMnJyZg9ezbMzc0RExMDGxsbjZeav/32W3h7eyMhIQGlpaXYsGED4uPj\nER4ejuDgYI3GFGtXa6oenGmpo+RyOaKiouDs7AxPT0/I5XLI5XKd6556+vRp7NixA0eOHIGdnR1G\njBiBESNGwMPDQ+Mx586dC0NDQ3zzzTfVmLRmfPXVV1Vez8nJQXR0NJKTkxESEsLCpR6TyWT4888/\nYW1tXWPvERcXh969e8PExAQpKSm4efMmnJyc8M033yA1NRX+/v4aj3316lWsXr0aly5dQnl5OTw8\nPDB37lz1ieZEf8eipY7S09ODra0thgwZAoVCAU9PT1haWgodS2NZWVnYs2cPduzYgbi4OK2WtaZP\nnw5/f3+0b98e7du3r9SYTUzt1L28vKq8bmxsjDZt2uDLL7+Evb19LaciMZFKpcjIyKjRoqV3797w\n8PDAqlWrKuw9uXDhAkaNGoWUlJQae2+iv2PRUkfl5eUhJCQESqUSQUFBuHLlClxdXSGXy6FQKCCX\ny2FlZSV0TI3ExMRoNdPyvEIAeLoEde7cOY3HJqptUqkUf/31V43+ezYxMUFMTAycnZ0rFC2pqalo\n3bo1CgsLNRr3xIkTkMlk6NevX4XrgYGBKC8vR//+/asjPtUh3NNSRxkYGMDb21vd+yA3NxehoaEI\nCgrCqlWrMHr0aLRq1QrXrl0TOOnr06ZgAaDVo59E2rh79y4kEon6aaHIyEjs3bsXbm5umDBhgsbj\nurq6vnTPV2ZmpsbjN27cuMrHj2/evKlVsTRv3rwqm8ipVCrMmzePRQtVwqKlnjAwMIC5uTnMzc1h\nZmaGBg0a4Pr160LHIqpXRo0ahQkTJuDjjz9GRkYG+vTpg3bt2mHPnj3IyMjAokWLNBrXz88PJiYm\n1Zz2/w0ePBhLly7FgQMHADydkUxLS8O8efMwfPhwjcdNTEys8onANm3a1Kmu3lR9uDxUR5WXlyM6\nOlq9PBQWFoa8vLxKXXLr636IqKgoHDx4EGlpaSguLq5wj/0bqKaYmZkhIiICrVu3xsYduAw4AAAg\nAElEQVSNGxEQEICwsDCcOnUKkyZNwu3bt197zNrY0/L48WMMGDAA8fHxyM3NRbNmzZCRkYFu3brh\nxIkTlZrNvaqmTZti79696NWrV4XrZ86cwahRo3D//v3qiE91CGda6ihTU1Pk5eXB1tYWCoUCa9eu\nhZeXF5ydnYWO9lxHjx5F//79a/zE4v3792Ps2LHo27cvTp8+jb59+yIxMREZGRkYOnRojb431W8l\nJSXq05bPnDmjPlG8TZs2Gvfaqa5WAC9ibGyM0NBQnDt3DjExMeqnfHr37q3VuD4+PpgxYwZ+++03\n9e+mpKQkfP311zp12jrVHs601FFbt26Fl5cXXF1dhY7yymQyGTIyMmBlZVWjj3G2b98eEydOxOTJ\nk9WbCh0dHTFx4kTY2tq+tPsnkabeeusteHl5YeDAgepGih06dEBERARGjBiBe/fuvfaYtTHTkpKS\nUiNnl+Xk5MDb2xvR0dHqfT737t1Dz549cfjwYZiamlb7e5JuY9FCotG0aVNs374d7733Xo0+EWFg\nYID4+Hg4ODjA0tISQUFBcHd3x/Xr19GrVy92l6Uao1QqMXToUDx+/Bjjxo1Tn3P1r3/9Czdu3BDt\n0qRUKkX37t3x8ccf4/3336/WQxNVKhVOnz6N2NhYNGnSBO3bt4enp2e1jU91C5eHSDQmTZqEwYMH\nQyKRQCKRoGnTps/9Wm36tJibmyM3NxfA0xNwr127Bnd3d2RnZyM/P1/jcYleRqFQ4OHDh3j8+DHM\nzMzU1ydMmAB9fX0Bk71YdHQ09u3bh2XLlmH69Ono168fxowZAx8fH/Vyl6YkEgn69u2Lvn37VlNa\nqss400KicuPGDSQlJcHHxwc7d+587vSwNie3jho1Cl26dMFXX32F5cuXY8OGDRg8eDBOnz4NDw8P\n0f61S7pvz549GDNmTJX3Zs+eje+//76WE70elUoFpVKJvXv34tdff0VZWRmGDx+u1cnodeXEdaod\nLFpIlPz8/DB79uwa+eszMzMThYWFaNasGcrLy7F69WqEhobCxcUF33zzTYW/gImqk6mpKfbs2YNB\ngwZVuD5z5kzs379fp5YmY2JiMH78eK06VNelE9epdrBoIVF78OABbt68CYlEAldXV53t4ksEACdP\nnsSHH36Io0ePqvdtTJ06FYcPH8bZs2fRpk0bgRO+2N27d7Fv3z7s3bsXV69eRbdu3TB69Gh88cUX\nGo1Xl05cp9rBooVEKT8/H1OmTMHu3bvVf8XJZDKMHTsWmzZt0noGpry8HElJSVVOSXMTINWk/fv3\n48svv8SpU6ewY8cO/Pe//0VQUJCon/Tbtm0bfvnlF4SFhaF169YYPXo0Ro0apfUTRRYWFoiMjBR1\nKwYSFxYtJEoTJ07EmTNnsHnzZrzzzjsAgNDQUEybNg19+vTBli1bNB47IiICo0aNQmpqKv754y+R\nSLTa5Ev0KrZs2YKZM2fCysoKQUFBcHFxETrSC9nZ2eHDDz/E6NGj0bFjx2obV5dOXCdxYNFComRp\naYlDhw5BoVBUuB4UFIQPPvgADx480Hjsjh07wtXVFX5+flWuo9dkO3Sqf7766qsqrx86dAidOnWq\nMMsgphPG/06lUtVIEztdOnGdxIGPPJMo5efnw8bGptJ1a2trrR9LTkxMxKFDh0T/1y3VDZcvX67y\nurOzMx4/fqy+XxudbTX17JHnW7duQSKRoFWrVuqn8LQRFxennrn55+GtYv7vQcLhTAuJ0rvvvgsL\nCwv4+/ujcePGAICCggKMGzcOmZmZOHPmjMZj9+rVC3PmzFGfgE1EzzdnzhysXr0ahoaGcHJygkql\nwu3bt5Gfn49Zs2Zh5cqVQkekeoQzLSRKGzZsgLe3N1q0aIEOHTpAIpHgypUraNy4MQIDA197vLi4\nOPXnU6dOxddff42MjAy4u7tXmpJu37691vmJ6oJdu3Zh06ZN2LhxIyZOnKj+t1JSUoItW7Zg7ty5\naNeuHcaOHavV+yQlJSE5ORmenp5o0qRJjS1Hke7jTAuJVkFBAfbs2YMbN25ApVLBzc0No0ePRpMm\nTV57LKlUColEUmnj7TPP7nEjLlW3YcOGvfLXiq2x4ZtvvomPPvoIM2fOrPL+2rVrsX//fkRGRmo0\n/qNHj/DBBx8gKCgIEokEiYmJcHJywvjx42Fqaoo1a9ZoE5/qIM60kGg1adIEn3/+ebWMdefOnWoZ\nh+h16fLG7vj4+Bd2nx4yZIhWT/7MnDkTenp6SEtLQ9u2bdXXR44ciZkzZ7JooUpYtFC9YG9vL3QE\nqqd27twpdASNyWQyFBcXP/d+SUkJZDKZxuOfOnUKgYGB6hOen2nVqhVSU1M1HpfqLqnQAYhq265d\nu3D8+HH16zlz5sDU1BTdu3fnL0qqFQ8ePEBoaCjCwsK0eny/pnXu3Bm//PLLc+/v3r0bHh4eGo+f\nl5dXZaPIhw8fan0QI9VNLFqo3lmxYoV6X0x4eDg2b96MVatWwdLS8rlr90TVIS8vD59++ilsbW3h\n6emJnj17olmzZhg/frwoTxj/+uuv8e2332LOnDn466+/1NczMjIwe/ZsrFy5ErNmzdJ4fE9PT/j7\n+6tfSyQSlJeX4/vvv4eXl5dW2alu4kZcqnf09fVx48YNtGzZEnPnzsWff/4Jf39/xMfHQ6FQiPov\nX9JtNdnpuaZs2rQJs2bNQmlpqXp/Tk5ODmQyGVatWoUZM2ZoPHZCQgIUCgU6d+6Mc+fOwcfHB/Hx\n8cjMzERYWBjb+1MlLFpIlJycnBAVFQULC4sK17Ozs+Hh4YHbt29rPLa1tTUCAwPRqVMndOrUCTNn\nzsTYsWORnJyMDh064MmTJ9rGJ6pSTXZ6rkn37t3DwYMHkZiYCABwdXXF8OHDYWdnp/XYGRkZ2LJl\nCy5duoTy8nJ4eHhg8uTJsLW11Xpsqnu4EZdEKSUlpcpHj4uKipCenq7V2H369MFnn32GTp064dat\nWxg4cCCAp09KaHsAHNGL1GSn55rUokWLGls6bdq0Kfz8/GpkbKp7WLSQqBw9elT9eWBgYIXHRcvK\nynD27FmtC4sffvgBCxcuxN27d/Hrr7+qZ3MuXbqEjz76SKuxiV6kW7duWLx4caVOz35+fujWrZvA\n6WrH3xs9vgwbPdI/cXmIREUqfbo3vKpGcHp6enBwcMCaNWswaNAgIeIRaeXatWvw9vZGYWFhlZ2e\n27VrJ3TEGveyRo/PsNEjVYVFC4mSo6MjoqKiYGlpWe1jv/POO1AoFFAoFOjevTsMDAyq/T2Inqc6\nOz3rotdpK8D+SvRPLFpIZ2RnZ8PU1FTrcb799lsEBwfjwoULKCwsROfOnSGXy6FQKNCjRw8YGhpW\nQ1oiIqpuLFpIlFauXAkHBweMHDkSAPD+++/j119/ha2tLU6cOIEOHTpo/R5lZWWIioqCUqmEUqnE\nuXPnIJFIUFRUpPXYRH/n6emJo0ePqovuo0ePok+fPjozu7JgwQIoFAq88847VTaDex1Hjx5F//79\noaenV2EPW1V8fHy0ei+qe1i0kCg5OTlhz5496N69O06fPo0PPvgAAQEBOHDgANLS0nDq1Cmt3+PG\njRsIDg6GUqlEcHAwiouL0bNnT/z222/V8B0Q/T+pVIqMjAxYW1sDAIyNjXHlyhU4OTkJnOzVeHt7\n48KFCygqKoKHhwcUCgXkcrlGM5N//2/xbA9bVbinharCooVEqUmTJrh16xbs7Owwffp0FBYWYuvW\nrbh16xbeeustZGVlaTz2yJEjcf78eZSXl8PT0xOenp6Qy+V8UoFqzD+LFiMjI8TGxupM0QI8nZmM\njIxUF/rh4eEoKCiAh4cHIiIihI5H9QQfeSZRMjMzw927d2FnZ4eTJ09i2bJlAACVSqX1X18HDx6E\npaUlfH194eXlhZ49e3IfC9FLyGQydOvWDebm5jAzM4ORkRGOHDmC5ORkoaNRPcKihURp2LBhGDVq\nFFq1aoVHjx6hf//+AIArV67AxcVFq7EzMzNx/vx5KJVKLFy4EPHx8ejQoYP6iaJn70VUnf7ed6i8\nvBxnz57FtWvXKnyNWPdwbNmyBcHBwQgODkZZWRl69uwJuVyOb775RqMZyosXLyIzM7PCvzV/f38s\nXrwYeXl5GDJkCDZt2sRDE6kSLg+RKJWUlGDDhg24e/cufH190alTJwDA+vXrYWhoiM8++6za3is5\nORnLli3Dnj17UF5eznV0qnYv2rvxjJj3cEilUlhZWeHrr7/GpEmTYGxsrNV4/fv3h0KhwNy5cwEA\nV69ehYeHB3x9fdG2bVt8//33mDhxIpYsWVIN6akuYdFC9U5mZqZ6XV6pVCI+Ph7m5ubw9PSEl5cX\nJk+eLHREIlE5cuSIenYyISGhwsykJsurtra2OHbsGLp06QLg6dNJwcHBCA0NBfB0CXfx4sVISEio\n9u+FdBuLFhKt3bt3Y+vWrbh9+zbCw8Nhb2+P9evXw9HREYMHD9Z4XJlMBktLS/Ts2VP9i/eNN96o\nxuREdVdOTg5CQkJw6NAh7N27V6M2AY0bN0ZiYqL6wMUePXrA29sbCxcuBPD07DF3d3fk5uZWe37S\nbdzTQqK0ZcsWLFq0CDNmzMDy5cvV0+ampqZYv369VkVLbGwsixSi1/TPGcpr167BwsICcrn8tcey\nsbHBnTt3YGdnh+LiYsTExFQ4NDE3Nxd6enrVGZ/qiJcvtBIJYNOmTdi+fTsWLFgAmUymvt6lSxdc\nvXpVq7FZsBC9nvbt28Pa2hoTJ05Eeno6Pv/8c8TGxuL+/fs4ePDga4/n7e2NefPmISQkBPPnz4e+\nvj569uypvh8XFwdnZ+fq/BaojuBMC4nSnTt31Jtv/65Ro0bIy8vTevxDhw6pG9UVFxdXuBcTE6P1\n+ER1yYQJE6p1GXXZsmUYNmwY5HI5DA0NsWvXLjRs2FB9f8eOHejbt2+1vBfVLZxpIVFydHTElStX\nKl3//fff4ebmptXYGzduxCeffAJra2tcvnwZb775JiwsLHD79m0+7kxUhSlTpuCNN95AcXExbt68\nidLSUq3Gs7KyQkhICLKyspCVlYWhQ4dWuP9sIy7RP7FoIVGaPXs2Jk+ejICAAKhUKkRGRmL58uX4\n17/+hdmzZ2s19o8//oht27Zh8+bNaNiwIebMmYPTp09j2rRpyMnJqabvgKhq2dnZ+OmnnzB//nxk\nZmYCeDq7l56eLnCy5ysoKMD48eOhr6+Pdu3aIS0tDQAwbdo0fPfddxqPa2JiUmH59xlzc/MKMy9E\naioikdq2bZuqZcuWKolEopJIJKoWLVqofvrpJ63HbdKkiSolJUWlUqlUVlZWqitXrqhUKpXq1q1b\nKnNzc63HJ3qe2NhYlZWVlcrFxUXVoEEDVXJyskqlUqkWLlyo+vjjjwVO93zTpk1Tde7cWRUSEqIy\nMDBQ5/7vf/+r6tixo8DpqD7hTAuJ1ueff47U1FTcv38fGRkZuHv3LsaPH6/1uE2bNsWjR48AAPb2\n9upzU+7cuQMVOwBQDfrqq6/g6+uLxMRENG7cWH29f//+OH/+vIDJXuzIkSPYvHkzevToAYlEor7u\n5ubGNv5Uq1i0kOhZWlrC1NQUT548qZbxevXqhWPHjgEAxo8fj5kzZ6JPnz4YOXJkpbV1ouoUFRWF\niRMnVrrevHlzZGRkCJDo1Tx48EB92OPf5eXlVShiiGoaixYSnZ07d2Lq1Kn45ZdfAADz58+HkZER\nTExM0KdPH/Usiaa2bduGBQsWAAAmTZqEn3/+GW3btoWfnx+2bNmidX6i52ncuDEeP35c6frNmzdh\nZWUlQKJX07VrVxw/flz9+lmhsn37dnTr1k2oWFQPsSMuicry5cuxfPlydO/eHZcvX8YHH3yAI0eO\nYMaMGZBKpdi4cSMGDRrE4oJ00oQJE/DgwQMcOHAA5ubmiIuLg0wmw5AhQ+Dp6Yn169cLHbFKFy5c\ngLe3N0aPHo2ff/4ZEydORHx8PMLDwxEcHIzOnTsLHZHqCRYtJCqtWrXC0qVL8dFHHyE6OhpvvfUW\nAgICMGLECABPH3meNGkSUlNTtXqf7OxsREZG4v79+ygvL69wb+zYsVqNTfQ8jx8/xoABAxAfH4/c\n3Fw0a9YMGRkZ6NatG06cOAEDAwOhIz7X1atXsXr1aly6dAnl5eXw8PDA3Llz4e7uLnQ0qkdYtJCo\nNGrUCElJSeozSRo1aoS4uDi0bt0aAJCeng5HR8dKDeFex7FjxzB69Gjk5eXByMiowpq8RCJRP4ZK\nVFPOnTuHmJgY9f/8e/fuLXQkIp3AooVERSqVIiMjQ73pz8jICLGxsXBycgIA/PXXX2jWrJn6LCJN\nuLq6YsCAAVixYgX09fWrJTdRXVPV3pvnMTY2rsEkRP+PbfxJdBISEtRPUqhUKty4cUP95NDDhw+1\nHj89PR3Tpk1jwUKCiIyMhFKprHJpcu3atQKlqszU1PSlTwapVCpIJBKt/oggeh0sWkh03n333Qr9\nUgYNGgTg6dLNs1+S2ujXrx+io6PVszdEtWXFihVYuHAhWrduDRsbm0pLk2ISFBQkdASiSrg8RKLy\nqhts7e3tX2vco0ePqj9/8OABli5dik8++QTu7u7Q09Or8LU+Pj6vNTbRq7KxscHKlSvh6+srdBQi\nncSiheoFqfTVWhJxqptqkq2tLc6fP49WrVoJHeWVjB07Fj/88AOMjIwAALGxsXBzc6tU6BPVFhYt\nRES1ZNWqVfjjjz9E24/ln2QyGf7880/1xnhjY2NcuXKFS6skGO5pISKqJbNmzcLAgQPh7Oxc5YzF\n4cOHBUpWtX/+Tcu/cUlobONP9cbFixfx+++/V7jm7+8PR0dHWFtbY8KECSgqKhIoHdUHU6dORVBQ\nEFxdXWFhYQETE5MKH0T0YpxpoXpjyZIlUCgU6N+/P4CnHT7Hjx8PX19ftG3bFt9//z2aNWuGJUuW\nCBuU6ix/f3/8+uuvGDhwoNBRXtmLWhA80759eyGiUT3EPS0kWqWlpVAqlUhOTsaoUaNgZGSEP/74\nA8bGxjA0NHzt8WxtbXHs2DF06dIFALBgwQIEBwcjNDQUAHDw4EEsXrwYCQkJ1fp9ED1jb2+PwMBA\ntGnTRugor0QqlapbDfzT31sQcPM61RbOtJAopaamwtvbG2lpaSgqKkKfPn1gZGSEVatWobCwEP/+\n979fe8ysrCzY2NioXwcHB8Pb21v9umvXrrh792615CeqypIlS7B48WLs3LlTJ5ob3rlzR+gIRBWw\naCFRmj59Orp06YLY2FhYWFiorw8dOhSfffaZRmPa2Njgzp07sLOzQ3FxMWJiYuDn56e+n5uby0c5\nqUZt3LgRycnJsLGxgYODQ6Wft5iYGIGSVe11+yER1TQWLSRKoaGhCAsLQ8OGDStct7e3R3p6ukZj\nent7Y968eVi5ciWOHDkCfX199OzZU30/Li4Ozs7OWuUmepEhQ4YIHYFIp7FoIVEqLy+vcp383r17\n6kZXr2vZsmUYNmwY5HI5DA0NsWvXrgpF0Y4dO9C3b1+NMxO9zOLFi4WOQKTTuBGXRGnkyJEwMTHB\ntm3bYGRkhLi4OFhZWWHw4MFo2bIldu7cqfHYOTk5MDQ0hEwmq3A9MzMThoaGlWZ3iKrbpUuXcP36\ndUgkEri5uaFTp05CRyLSCSxaSJT++OMPeHl5QSaTITExEV26dEFiYiIsLS1x/vx5dYdOIl1y//59\nfPjhh1AqlTA1NYVKpUJOTg68vLywf/9+WFlZCR2RSNRYtJBoFRQUYN++fYiJiUF5eTk8PDwwevRo\nNGnSROhoRBoZOXIkkpOTsXv3brRt2xbA0z4o48aNg4uLC/bt2ydwwuer7hYERJpg0UJEVEtMTExw\n5swZdO3atcL1yMhI9O3bF9nZ2QIle7F/tiC4desWnJycMGPGDI1bEBBpghtxSbRu3boFpVKJ+/fv\no7y8vMK9RYsWCZSKSHPl5eVVPlavp6dX6WdcTGqiBQGRJjjTQqK0fft2fPHFF7C0tETTpk0hkUjU\n9yQSiej6WRC9isGDByM7Oxv79u1Ds2bNAADp6ekYPXo0zMzM8NtvvwmcsGqWlpYICwtD69atYWRk\nhNjYWDg5OSElJQVubm7Iz88XOiLVE5xpIVFatmwZli9fjrlz5wodhajabN68GYMHD4aDgwPs7Owg\nkUiQlpYGd3d37NmzR+h4z1UTLQiINMGZFhIlY2NjXLlyBU5OTkJHIap2p0+fxo0bN6BSqeDm5obe\nvXsLHemFarIFAdHrYNFCojR+/Hh07doVkyZNEjoKUb3HFgQkFixaSDQ2btyo/jwvLw9r167FwIED\n4e7uXmnz4rRp02o7HpHGLl68iMzMTPTv3199zd/fH4sXL0ZeXh6GDBmCTZs2oVGjRgKmfDG2ICAx\nYNFCouHo6PhKXyeRSHD79u0aTkNUffr37w+FQqHeo3X16lV4eHjA19cXbdu2xffff4+JEydiyZIl\nwgYlEjkWLURENczW1hbHjh1Dly5dAAALFixAcHAwQkNDAQAHDx7E4sWLkZCQIGTMF2ILAhIDPj1E\nouLk5ISoqKgKvSCIdF1WVhZsbGzUr4ODg+Ht7a1+3bVrV9y9e1eIaK/kZS0IWLRQbWHRQqKSkpJS\n5aOVRLrMxsYGd+7cgZ2dHYqLixETEwM/Pz/1/dzc3CqbzokFWxCQWEiFDkBEVNd5e3tj3rx5CAkJ\nwfz586Gvr4+ePXuq78fFxcHZ2VnAhC+WlZWF999/X+gYRJxpIfFJSEhARkbGC7+mffv2tZSGSHvL\nli3DsGHDIJfLYWhoiF27dqFhw4bq+zt27EDfvn0FTPhi77//Pk6dOsUWBCQ4bsQlUZFKpZBIJKjq\nx/LZdYlEwiUk0kk5OTkwNDSETCarcD0zMxOGhoYVChkx+fbbb9mCgESBRQuJilQqRWRkJKysrF74\ndfb29rWUiIhe1I6ALQioNrFoIVGRSqXIyMhgh00iIqqEG3GJiOiVPHz4EI8ePRI6BtVjLFpIVORy\nuWjX9Ynqo+zsbEyePBmWlpawsbGBtbU1LC0tMWXKFGRnZwsdj+oZLg8REVGVMjMz0a1bN6Snp2P0\n6NFo27YtVCoVrl+/jr1798LOzg4XLlyAmZmZ0FGpnmDRQkREVZoxYwbOnj2LM2fOVOjoCwAZGRno\n27cv3n33Xaxbt06ghFTfsGghIqIqOTg4YOvWrejXr1+V90+ePIlJkyYhJSWldoNRvcU9LUREVKU/\n//wT7dq1e+79N95446WNIImqE4sWIiKqkqWl5QtnUe7cucPDTalWsWgh0Tp//jyio6MrXIuOjsb5\n8+cFSkRUv3h7e2PBggUoLi6udK+oqAjffPNNhdOqiWoa97SQaEmlUrRp0wYJCQnqa23btsWtW7fY\nxp+oFty7dw9dunRBo0aNMHnyZLRp0wbA0/PBfvzxRxQVFSE6Ohp2dnYCJ6X6gkULiVZqair09PTQ\nrFkz9bU//vgDJSUlbONPVEvu3LmDL7/8EqdOnVKfCSaRSNCnTx9s3rwZLi4uAiek+oRFCxERvVRW\nVhYSExMBAC4uLjA3Nxc4EdVHLFpIlJycnBAVFVVpk192djY8PDx4QBsRUT3EjbgkSikpKVXuWykq\nKkJ6eroAiYiISGgNhA5A9HdHjx5Vfx4YGAgTExP167KyMpw9exYODg4CJCMiIqFxeYhERSp9Ovkn\nkUjwzx9NPT09ODg4YM2aNRg0aJAQ8YiISEAsWkiUHB0dERUVBUtLS6GjEBGRSLBoISIiIp3APS0k\nGhs3bsSECRPQuHFjbNy48YVfO23atFpKRUREYsGZFhINR0dHREdHw8LCAo6Ojs/9OolEwkeeiYjq\nIRYtREREpBPYp4WIiIh0Ave0kCipVCocOnQIQUFBuH//PsrLyyvcP3z4sEDJiIhIKCxaSJSmT5+O\nbdu2wcvLCzY2NpBIJEJHIiIigXFPC4mSubk59uzZgwEDBggdhYiIRIJ7WkiUTExM4OTkJHQMIiIS\nERYtJEpLliyBn58fCgoKhI5CREQiweUhEqX8/HwMGzYMYWFhcHBwgJ6eXoX7MTExAiUjIiKhcCMu\niZKvry8uXbqEMWPGcCMuEREB4EwLiZSBgQECAwPRo0cPoaMQEZFIcE8LiZKdnR2MjY2FjkFERCLC\nooVEac2aNZgzZw5SUlKEjkJERCLB5SESJTMzM+Tn56O0tBT6+vqVNuJmZmYKlIyIiITCjbgkSuvX\nrxc6AhERiQxnWoiIiEgncKaFRKusrAxHjhzB9evXIZFI4ObmBh8fH8hkMqGjERGRAFi0kCglJSVh\nwIABSE9PR+vWraFSqXDr1i3Y2dnh+PHjcHZ2FjoiERHVMi4PkSgNGDAAKpUKv/zyC8zNzQEAjx49\nwpgxYyCVSnH8+HGBExIRUW1j0UKiZGBggIiICLi7u1e4Hhsbi3feeQdPnjwRKBkREQmFfVpIlBo1\naoTc3NxK1588eYKGDRsKkIiIiITGooVEadCgQZgwYQIuXrwIlUoFlUqFiIgITJo0CT4+PkLHIyIi\nAXB5iEQpOzsb48aNw7Fjx9SN5UpLS+Hj44Off/4ZJiYmAickIqLaxqKFRC0pKQnXr1+HSqWCm5sb\nXFxchI5EREQCYdFColNSUoLWrVvjf//7H9zc3ISOQ0REIsE9LSQ6enp6KCoqgkQiEToKERGJCIsW\nEqWpU6di5cqVKC0tFToKERGJBJeHSJSGDh2Ks2fPwtDQEO7u7jAwMKhw//DhwwIlIyIiobCNP4mS\nqakphg8fLnQMIiISEc60EBERkU7gnhYiIiLSCSxaSFSSk5Px6aefql+3bNkS5ubm6g8rKyvcvHlT\nwIRERCQU7mkhUdm0aROaNm2qfp2VlYVFixbB2toaABAQEIB169bh3//+t1ARiYhIICxaSFTOnDmD\nTZs2Vbg2fPhwODk5AQAcHBzw2WefCRGNiIgExuUhEpXU1FQ4OjqqX3/22WcVzhoeu0wAAAjESURB\nVBlycHDAvXv3hIhGREQCY9FCoiKVSnH//n3163Xr1sHCwkL9+q+//lIfoEhERPULixYSlXbt2uHM\nmTPPvR8YGIg33nijFhMREZFYsGghUfnkk0+wfPlyHD9+vNK9Y8eO4bvvvsMnn3wiQDIiIhIam8uR\n6Hz00UcICAhAmzZt0Lp1a0gkEty4cQM3b97E8OHDceDAAaEjEhGRAFi0kCjt378f+/fvx61btwAA\nrVq1wkcffYQPP/xQ4GRERCQUFi1ERESkE7inhYiIiHQCixYiIiLSCSxaiIiISCewaCEiIiKdwKKF\nRC0rK6vStYiICAGSEBGR0Fi0kKhZWFigXbt2WLNmDQoLC3HgwAG8++67QsciIiIB8JRnErWoqChc\nvXoVP/30E9auXYsHDx5gyZIlQsciIiIBcKaFRCUxMRGJiYnq1507d4avry/69++PR48eoXHjxhg+\nfLiACYmISCgsWkhUJk6ciNjY2ArXtm7dipUrV+J///sfJkyYgEWLFgmUjoiIhMTlIRKVmJgYeHh4\nqF8fOnQICxYswMmTJ9G9e3dYWFigd+/eAiYkIiKhcKaFREUqleL+/fsAgMDAQHz11Vc4c+YMunfv\nDgBo2LAhysrKhIxIREQC4UwLiUqvXr0watQodO/eHYcOHcLSpUvRsWNH9f0tW7agQ4cOAiYkIiKh\n8MBEEpWHDx9izpw5kMlkGDx4MEaNGoUBAwagU6dOCAkJwcmTJ3H27FnI5XKhoxIRUS1j0UKilpCQ\nAD8/P8TFxaF58+aYPXs2+vXrJ3QsIiISAIsWIiIi0gnciEtEREQ6gUULERER6QQWLURERKQTWLQQ\nERGRTmDRQqJWXFyMmzdvorS0VOgoREQkMBYtJEr5+fkYP3489PX10a5dO6SlpQEApk2bhu+++07g\ndEREJAQWLSRK8+fPR2xsLJRKJRo3bqy+3rt3bwQEBAiYjIiIhMI2/iRKR44cQUBAAN5++21IJBL1\ndTc3NyQnJwuYjIiIhMKZFhKlBw8ewNrautL1vLy8CkUMERHVHyxaSJS6du2K48ePq18/K1S2b9+O\nbt26CRWLiIgExOUhEqVvv/0W3t7eSEhIQGlpKTZs2ID4+HiEh4cjODhY6HhERCQAzrSQKHXv3h1h\nYWHIz8+Hs7MzTp06BRsbG4SHh6Nz585CxyMiIgHwwEQiIiLSCZxpIVE6ceIEAgMDK10PDAzE77//\nLkAiIiISGosWEqV58+ahrKys0nWVSoV58+YJkIiIiITGooVEKTExEW5ubpWut2nTBklJSQIkIiIi\nobFoIVEyMTHB7du3K11PSkqCgYGBAImIiEhoLFpIlHx8fDBjxowK3W+TkpLw9ddfw8fHR8BkREQk\nFD49RKKUk5MDb29vREdHo0WLFgCAe/fuoWfPnjh8+DBMTU0FTkhERLWNRQuJlkqlwunTpxEbG4sm\nTZqgffv28PT0FDoWEREJhEULERER6QS28SfRysvLQ3BwMNLS0lBcXFzh3rRp0wRKRUREQuFMC4nS\n5cuXMWDAAOTn5yMvLw/m5uZ4+PAh9PX1YW1tXeWTRUREVLfx6SESpZkzZ+K9995DZmYmmjRpgoiI\nCKSmpqJz585YvXq10PGIiEgAnGkhUTI1NcXFixfRunVrmJqaIjw8HG3btsXFixcxbtw43LhxQ+iI\nRERUyzjTQqKkp6cHiUQCALCxsUFaWhqAp03nnn1ORET1Czfikih16tQJ0dHRcHV1hZeXFxYtWoSH\nDx9i9+7dcHd3FzoeEREJgMtDJErR0dHIzc2Fl5cXHjx4gHHjxiE0NBQuLi7YuXMnOnToIHREIiKq\nZSxaiIiISCdwTwsRERHpBO5pIdHo1KmTevPty8TExNRwGiIiEhsWLSQaQ4YMEToCERGJGPe0EBER\nkU7gnhYiIiLSCVweItEwMzN75T0tmZmZNZyGiIjEhkULicb69euFjkBERCLGPS1ERESkEzjTQqJX\nUFCAkpKSCteMjY0FSkNERELhRlwSpby8PEyZMgXW1tYwNDSEmZlZhQ8iIqp/WLSQKM2ZMwfnzp3D\njz/+iEaNGuGnn36Cn58fmjVrBn9/f6HjERGRALinhUSpZcuW8Pf3h0KhgLGxMWJiYuDi4oLdu3dj\n3759OHHihNARiYiolnGmhUQpMzMTjo6OAJ7uX3n2iHOPHj1w/vx5IaMREZFAWLSQKDk5OSElJQUA\n4ObmhgMHDgAAjh07BlNTUwGTERGRULg8RKK0bt06yGQyTJs2DUFBQRg4cCDKyspQWlqKtWvXYvr0\n6UJHJCKiWsaihXRCWloaoqOj4ezsjA4dOggdh4iIBMCihUQlKSkJLi4uQscgIiIRYtFCoiKVStG8\neXN4eXmpPxwcHISORUREIsCihUQlJCQEwcHBUCqVCA8PR2FhIVq2bIlevXqpi5jmzZsLHZOIiATA\nooVEq6SkBOHh4VAqlVAqlYiIiEBRURFcXFxw8+ZNoeMREVEtY9FColdQUIDQ0FAEBgZi+/btePLk\nCcrKyoSORUREtYxFC4lOYWEhLly4gKCgICiVSkRFRcHR0RFyuRyenp6Qy+VcIiIiqodYtJCoyOVy\nREVFwdnZWV2gyOVy2NjYCB2NiIgExqKFREVPTw+2trYYMmQIFAoFPD09YWlpKXQsIiISARYtJCp5\neXkICQmBUqlEUFAQrly5AldXV8jlcigUCsjlclhZWQkdk4iIBMCihUQtNzcXoaGh6v0tsbGxaNWq\nFa5duyZ0NCIiqmU8MJFEzcDAAObm5jA3N4eZmRkaNGiA69evCx2LiIgEwJkWEpXy8nJER0erl4fC\nwsKQl5dXqUuuvb290FGJiKiWsWghUTE2NkZeXh5sbW2hUCigUCjg5eUFZ2dnoaMREZHAWLSQqGzd\nuhVeXl5wdXUVOgoREYkMixYiIiLSCdyIS0RERDqBRQsRERHpBBYtREREpBNYtBAREZFOYNFCRERE\nOoFFCxEREekEFi1ERESkE/4P8/ZdVJ/cDzYAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bcd34b4d30>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 去掉无效高分后的前二十大高分电影\n",
    "popular_items_count_top_20 = df_items_sorted_by_mean_rating_merge2.iloc[0:20]['mean_rating']\n",
    "popular_items_top_20_titles =  df_items_sorted_by_mean_rating_merge2.iloc[0:20]['title']\n",
    "\n",
    "objects = (list(popular_items_top_20_titles))\n",
    "y_pos = np.arange(len(objects))\n",
    "performance = list(popular_items_count_top_20)\n",
    " \n",
    "plt.rcdefaults()    \n",
    "plt.bar(y_pos, performance, align='center', alpha=0.5)\n",
    "plt.xticks(y_pos, objects, rotation='vertical')\n",
    "plt.ylabel('Mean Rating')\n",
    "plt.title('Most popular Movies')\n",
    " \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9kAAAFjCAYAAAApesjQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xt4VNXZN/7vTDI5kjOSiYicFWJA\nDoJEFCuCIlSph7eKiK31wVrl/VFqW4VCC0ULPD7vJVqoB9TaaoHWKoIPmArlJBgOgkFiqEJMACEB\nSUgCOZOZ3x9hhzntvdfes/fMnsz3c11el0z2zKzZs2dm3Wvd6142t9vtBhEREREREREFzR7uBhAR\nERERERF1FgyyiYiIiIiIiAzCIJuIiIiIiIjIIAyyiYiIiIiIiAzCIJuIiIiIiIjIIAyyiYiIiIiI\niAzCIJuIiIiIiIjIIAyyiYiIiIiIiAzCIJuIiIiIiIjIIAyyiYiIiIiIiAzCIJuIiIiIiIjIILHh\nboAIl8uFkydPIiUlBTabLdzNISIiIiIiok7O7Xbj3LlzuPzyy2G3i89PR0SQffLkSfTo0SPczSAi\nIiIiIqIoc/z4cVxxxRXCx0dEkJ2SkgKg/cWlpqaGuTVERERERETU2dXV1aFHjx4d8aioiAiypRTx\n1NRUBtlEREREREQUMlqXLLPwGREREREREZFBGGQTERERERERGYRBNhEREREREZFBGGQTERERERER\nGYRBNhEREREREZFBGGQTERERERERGYRBNhEREREREZFBImKf7EhQfb4FD7z2KU7VNSM2xobu6QmI\ni43B+FwnHhndG3GxHM8gIiIiIiLq7DRFfvPnz4fNZvP6z+l0Kt5n27ZtGD58OBISEtCnTx+88sor\nQTXYikY8uxHDnt2Ir0/Xo7bpAqrqW/HFiXP47GgNFn30H1w19yMs2lAS7mYSERERERGRyTTPZF9z\nzTXYtGlTx79jYmJkjy0rK8PEiRMxffp0vPPOO9i5cyeeeOIJXHbZZbj33nv1tdhiRjy7Ed+db1E9\n7tXtZQCA2RNzzW4SERERERERhYnmIDs2NlZ19lryyiuv4Morr8TSpUsBAAMHDsRnn32G//mf/+kU\nQXb1+RahAFvy2vYyPHXbAKaOExERERERdVKao73Dhw/j8ssvR+/evfHAAw/gm2++kT22sLAQt912\nm9dtt99+Oz777DO0trbK3q+5uRl1dXVe/1nRA699qul4N4C3C8vNaAoRERERERFZgKYg+/rrr8df\n//pX/Otf/8KKFStQWVmJG264AVVVVQGPr6ysRHZ2ttdt2dnZuHDhAs6cOSP7PIsWLUJaWlrHfz16\n9NDSzJA5fU58FltytLrBhJYQERERERGRFWgKsu+44w7ce++9GDRoEMaNG4f169cDAP7yl7/I3sdm\ns3n92+12B7zd0+zZs1FbW9vx3/Hjx7U0M2S6pcRpvk/PzCQTWkJERERERERWENTi4OTkZAwaNAiH\nDx8O+Hen04nKykqv206fPo3Y2FhkZWXJPm58fDxSU1O9/rOi1Y/doOl4G4Bp+b1MaQsRERERERGF\nX1BBdnNzMw4dOoScnJyAf8/Pz8fGjRu9bvv4449x3XXXweFwBPPUlpDZJQ6XdRGfzX5sDPfLJiIi\nIiIi6sw0RXy//OUvsW3bNpSVlWH37t247777UFdXhx/96EcA2tO8H3744Y7jH3/8cRw9ehS/+MUv\ncOjQIbz55pt444038Mtf/tLYVxFGe+eOFwq0fzqmN7fvIiIiIiIi6uQ0beH17bffYsqUKThz5gwu\nu+wyjBo1Crt27ULPnj0BABUVFTh27FjH8b1798aGDRswa9YsLF++HJdffjleeumlTrF9l6e9c8ej\n+nwLHnjtU5yqa0ZsjA3d0xMQFxuD8blOPDKaM9hERERERETRwOaWKpFZWF1dHdLS0lBbW2vZ9dlE\nRERERETUeeiNQzm9SkRERERERGQQBtlEREREREREBmGQTURERERERGQQBtlEREREREREBmGQTURE\nRERERGQQBtlEREREREREBmGQTURERERERGQQBtlEREREREREBmGQTURERERERGQQBtlERERERERE\nBmGQTURERERERGQQBtlEREREREREBmGQTURERERERGQQBtlEREREREREBokNdwOiTZvLjT1l1Th9\nrgndUhIwsncmYuy2cDeLiIiIiIiIDMAgO4QKiiuw4MMSVNQ2ddyWk5aA392Ziwl5OWFsGRERERER\nERmB6eIhUlBcgZ+9s98rwAaAytom/Oyd/SgorghTy4iIiIiIiMgoDLJDoM3lxoIPS+AO8DfptgUf\nlqDNFegIIiIiIiIiihQMskNgT1m13wy2JzeAitom7CmrDl2jiIiIiIiIyHAMskPg9Dn5AFvPcURE\n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\ne4dp0OcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bcd34396a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#绘制评分次数和平均得分散点图，以分析相关性\n",
    "fig, ax = plt.subplots(1, 1, figsize=(12, 4))\n",
    "ax.scatter(df_items_sorted_by_mean_rating_merge['rating_times'],df_items_sorted_by_mean_rating_merge['mean_rating']);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_id</th>\n",
       "      <th>mean_rating</th>\n",
       "      <th>rating_times</th>\n",
       "      <th>title</th>\n",
       "      <th>release_date</th>\n",
       "      <th>video_release_date</th>\n",
       "      <th>imdb_url</th>\n",
       "      <th>unknown</th>\n",
       "      <th>Action</th>\n",
       "      <th>Adventure</th>\n",
       "      <th>...</th>\n",
       "      <th>Musical</th>\n",
       "      <th>Mystery</th>\n",
       "      <th>Romance</th>\n",
       "      <th>Sci-Fi</th>\n",
       "      <th>Thriller</th>\n",
       "      <th>War</th>\n",
       "      <th>Western</th>\n",
       "      <th>ranking_rating_times</th>\n",
       "      <th>ranking_mean_rate</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1293</td>\n",
       "      <td>5.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Star Kid (1997)</td>\n",
       "      <td>16-Jan-1998</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?imdb-title-12...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1450</td>\n",
       "      <td>0</td>\n",
       "      <td>1997</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1467</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2</td>\n",
       "      <td>Saint of Fort Washington, The (1993)</td>\n",
       "      <td>01-Jan-1993</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Saint%20of%20...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1483</td>\n",
       "      <td>1</td>\n",
       "      <td>1993</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1653</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1</td>\n",
       "      <td>Entertaining Angels: The Dorothy Day Story (1996)</td>\n",
       "      <td>27-Sep-1996</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Entertaining%...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1652</td>\n",
       "      <td>2</td>\n",
       "      <td>1996</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>814</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1</td>\n",
       "      <td>Great Day in Harlem, A (1994)</td>\n",
       "      <td>01-Jan-1994</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?Great%20Day%2...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1661</td>\n",
       "      <td>3</td>\n",
       "      <td>1994</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1122</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1</td>\n",
       "      <td>They Made Me a Criminal (1939)</td>\n",
       "      <td>01-Jan-1939</td>\n",
       "      <td>NaN</td>\n",
       "      <td>http://us.imdb.com/M/title-exact?They%20Made%2...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1615</td>\n",
       "      <td>4</td>\n",
       "      <td>1939</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 29 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   item_id  mean_rating  rating_times  \\\n",
       "0     1293          5.0             3   \n",
       "1     1467          5.0             2   \n",
       "2     1653          5.0             1   \n",
       "3      814          5.0             1   \n",
       "4     1122          5.0             1   \n",
       "\n",
       "                                               title release_date  \\\n",
       "0                                    Star Kid (1997)  16-Jan-1998   \n",
       "1               Saint of Fort Washington, The (1993)  01-Jan-1993   \n",
       "2  Entertaining Angels: The Dorothy Day Story (1996)  27-Sep-1996   \n",
       "3                      Great Day in Harlem, A (1994)  01-Jan-1994   \n",
       "4                     They Made Me a Criminal (1939)  01-Jan-1939   \n",
       "\n",
       "   video_release_date                                           imdb_url  \\\n",
       "0                 NaN  http://us.imdb.com/M/title-exact?imdb-title-12...   \n",
       "1                 NaN  http://us.imdb.com/M/title-exact?Saint%20of%20...   \n",
       "2                 NaN  http://us.imdb.com/M/title-exact?Entertaining%...   \n",
       "3                 NaN  http://us.imdb.com/M/title-exact?Great%20Day%2...   \n",
       "4                 NaN  http://us.imdb.com/M/title-exact?They%20Made%2...   \n",
       "\n",
       "   unknown  Action  Adventure  ...   Musical  Mystery  Romance  Sci-Fi  \\\n",
       "0        0       0          1  ...         0        0        0       1   \n",
       "1        0       0          0  ...         0        0        0       0   \n",
       "2        0       0          0  ...         0        0        0       0   \n",
       "3        0       0          0  ...         0        0        0       0   \n",
       "4        0       0          0  ...         0        0        0       0   \n",
       "\n",
       "   Thriller  War  Western  ranking_rating_times  ranking_mean_rate  year  \n",
       "0         0    0        0                  1450                  0  1997  \n",
       "1         0    0        0                  1483                  1  1993  \n",
       "2         0    0        0                  1652                  2  1996  \n",
       "3         0    0        0                  1661                  3  1994  \n",
       "4         0    0        0                  1615                  4  1939  \n",
       "\n",
       "[5 rows x 29 columns]"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用正则表达式取出上映年份，即匹配括号即里面的四个数字,iloc [：，1]给出了Series和Series是一个带标签的数组\n",
    "#df_items_sorted_by_mean_rating_merge['year'] = df_items_sorted_by_mean_rating_merge.title.str.extract('(\\((\\d{4})\\))', expand=True).iloc[:,1:5] \n",
    "\n",
    "df_items_sorted_by_mean_rating_merge['year'] = df_items_sorted_by_mean_rating_merge.title.str.extract('(\\((\\d{4})\\))', expand=True).iloc[:,1] \n",
    "df_items_sorted_by_mean_rating_merge.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "#也可用以下方法获取\n",
    "#去掉年份后的Title\n",
    "#import re\n",
    "#pattern = re.compile(r'^(.*)\\((\\d+)\\)$')\n",
    "#title_map = {val:pattern.match(val).group(1) for ii,val in enumerate(set(df_items_sorted_by_mean_rating_merge['title']))}\n",
    "#df_items_sorted_by_mean_rating_merge['title'] = df_items_sorted_by_mean_rating_merge['title'].map(title_map)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1bcd3c33550>"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nGAMAAACgJGEMAAAAgJKEMQAAAABKEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoSxgAAAAAo\nSRgDAAAAoCRhDAAAAICShDEAAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJKEMQAAAABKEsYAAAAA\nKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEAAAAAShLGAAAA\nAChJGAMAAACgJGEMAAAAgJKEMQAAAABKEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoSxgAA\nAAAoSRgDAAAAoCRhDAAAAICShDEAAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJKEMQAAAABKEsYA\nAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEAAAAAShLG\nAAAAAChJGAMAAACgJGEMAAAAgJKEMQAAAABKEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoS\nxgAAAAAoSRgDAAAAoCRhDAAAAICShDEAAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJKEMQAAAABK\nEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEAAAAA\nShLGAAAAAChJGAMAAACgJGEMAAAAgJKEMQAAAABKEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAA\nAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEAAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJKEMQAA\nAABKEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEA\nAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJKEMQAAAABKEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQx\nAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEAAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJKE\nMQAAAABKEsYAAAAAKGlUYWzNmjX5xCc+kba2tkyePDmf+cxn8uKLL44YM3v27LS0tIzYfvd3f3fE\nmL1792bx4sXp6OhIR0dHFi9enNdee+3o7wYAAAAA3qNRhbEnn3wy119/fbZs2ZKNGzfmjTfeSE9P\nT4aGhkaMW7p0aXbt2tXcvvzlL484fs0112T79u3p6+tLX19ftm/fnsWLFx/93QAAAADAezR2NIP7\n+vpGfL799tszefLkbNu2LZ/61Kea+0855ZR0dXUd9hrf+9730tfXly1btuSTn/xkkuQrX/lKZs6c\nmRdffDFnnnnmaO8BAAAAAEbtqJ4xNjAwkCTp7Owcsf+ee+7JpEmT8rGPfSyrVq3Kvn37mseefvrp\ndHR0NKNYkpx//vnp6OjI5s2bD/s9w8PDGRwcHLEBAAAAwNEY1Yqxn9ZoNLJixYpceOGFmT59enP/\n7/3e7+WMM85IV1dXduzYkdWrV+c73/lONm7cmCTp7+/P5MmT33K9yZMnp7+//7DftWbNmtx8881H\nOlUAAAAAeIsjDmPLli3Ld7/73WzatGnE/qVLlzb/nj59en7lV34l5513Xr797W/n3HPPTZK0tLS8\n5XqNRuOw+5Nk9erVWbFiRfPz4OBguru7j3TqAAAAAHBkYWz58uV5+OGH89RTT+X0009/x7Hnnntu\nTjrppHz/+9/Pueeem66urrzyyitvGffqq69mypQph71Ga2trWltbj2SqAAAAAHBYo3rGWKPRyLJl\ny3L//ffn8ccfzxlnnPGu5zz//PM5ePBgpk6dmiSZOXNmBgYG8p//+Z/NMc8880wGBgZywQUXjHL6\nAAAAAHBkRrVi7Prrr8+9996bhx56KG1tbc1ngnV0dGT8+PH5wQ9+kHvuuSe//du/nUmTJuWFF17I\nypUr8xu/8RuZNWtWkuTXfu3XMm/evCxdujRf/vKXkyR/+Id/mAULFngjJQAAAAAfmFGtGFu/fn0G\nBgYye/bsTJ06tbndd999SZJx48blsccey9y5c3PmmWfmhhtuSE9PTx599NGMGTOmeZ177rknZ599\ndnp6etLT05Nzzjknd91117G9MwAAAAB4B6NaMdZoNN7xeHd3d5588sl3vU5nZ2fuvvvu0Xw1AAAA\nABxTo1oxBgAAAAA/K4QxAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEAAAAAShLGAAAAAChJ\nGAMAAACgJGEMAAAAgJKEMQAAAABKEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoSxgAAAAAo\nSRgDAAAAoCRhDAAAAICShDEAAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJKEMQAAAABKEsYAAAAA\nKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEAAAAAShLGAAAA\nAChp7PGewM+Sj/7phnc8/sMvXvYBzQQAAACAd2PFGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABA\nScIYAAAAACV5K+UJ5N3eapl4syUAAADAsWLFGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABAScIY\nAAAAACUJYwAAAACUJIwBAAAAUJIwBgAAAEBJwhgAAAAAJQljAAAAAJQkjAEAAABQkjAGAAAAQEnC\nGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABAScIYAAAAACUJYwAAAACUJIwBAAAAUJIwBgAAAEBJ\nwhgAAAAAJQljAAAAAJQkjAEAAABQkjAGAAAAQEnCGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABA\nScIYAAAAACUJYwAAAACUJIwBAAAAUJIwBgAAAEBJwhgAAAAAJQljAAAAAJQkjAEAAABQkjAGAAAA\nQEnCGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABAScIYAAAAACUJYwAAAACUJIwBAAAAUJIwBgAA\nAEBJwhgAAAAAJQljAAAAAJQkjAEAAABQkjAGAAAAQEnCGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYA\nAABAScIYAAAAACUJYwAAAACUJIwBAAAAUJIwBgAAAEBJwhgAAAAAJQljAAAAAJQkjAEAAABQkjAG\nAAAAQEnCGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABAScIYAAAAACUJYwAAAACUJIwBAAAAUJIw\nBgAAAEBJwhgAAAAAJQljAAAAAJQkjAEAAABQkjAGAAAAQEnCGAAAAAAlCWMAAAAAlCSMAQAAAFCS\nMAYAAABAScIYAAAAACUJYwAAAACUJIwBAAAAUJIwBgAAAEBJwhgAAAAAJQljAAAAAJQkjAEAAABQ\nkjAGAAAAQEnCGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABAScIYAAAAACUJYwAAAACUJIwBAAAA\nUJIwBgAAAEBJwhgAAAAAJQljAAAAAJQkjAEAAABQkjAGAAAAQEnCGAAAAAAlCWMAAAAAlDSqMLZm\nzZp84hOfSFtbWyZPnpzPfOYzefHFF0eMGR4ezvLlyzNp0qRMmDAhl19+eV566aURY370ox9l4cKF\nmTBhQiZNmpQbbrghBw4cOPq7AQAAAID3aFRh7Mknn8z111+fLVu2ZOPGjXnjjTfS09OToaGh5pgb\nb7wxDzzwQHp7e7Np06bs378/CxYsyKFDh5Ikhw4dymWXXZahoaFs2rQpvb29+frXv56VK1ce2zsD\nAAAAgHcwdjSD+/r6Rny+/fbbM3ny5Gzbti2f+tSnMjAwkK9+9au56667cskllyRJ7r777nR3d+fR\nRx/N3Llz88gjj+SFF17Izp07M23atCTJl770pSxZsiR/+Zd/mfb29mN0awAAAADw9o7qGWMDAwNJ\nks7OziTJtm3bcvDgwfT09DTHTJs2LdOnT8/mzZuTJE8//XSmT5/ejGJJMnfu3AwPD2fbtm2H/Z7h\n4eEMDg6O2AAAAADgaBxxGGs0GlmxYkUuvPDCTJ8+PUnS39+fcePGZeLEiSPGTpkyJf39/c0xU6ZM\nGXF84sSJGTduXHPM/2/NmjXp6Ohobt3d3Uc6bQAAAABIchRhbNmyZfnud7+bf/mXf3nXsY1GIy0t\nLc3PP/332435aatXr87AwEBz27lz55FOGwAAAACSHGEYW758eR5++OF861vfyumnn97c39XVlQMH\nDmTv3r0jxu/evbu5Sqyrq+stK8P27t2bgwcPvmUl2U+0tramvb19xAYAAAAAR2NUYazRaGTZsmW5\n//778/jjj+eMM84YcXzGjBk56aSTsnHjxua+Xbt2ZceOHbnggguSJDNnzsyOHTuya9eu5phHHnkk\nra2tmTFjxtHcCwAAAAC8Z6N6K+X111+fe++9Nw899FDa2tqaK786Ojoyfvz4dHR05LrrrsvKlStz\n2mmnpbOzM6tWrcrZZ5/dfEtlT09PzjrrrCxevDhr167Nnj17smrVqixdutRKMAAAAAA+MKMKY+vX\nr0+SzJ49e8T+22+/PUuWLEmS3HrrrRk7dmyuvvrqvP7665kzZ07uuOOOjBkzJkkyZsyYbNiwIZ//\n/Ocza9asjB8/Ptdcc01uueWWo78bAAAAAHiPRhXGGo3Gu445+eSTs27duqxbt+5tx/zSL/1S/v3f\n/300Xw0AAAAAx9QRv5USAAAAAD7MhDEAAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJKEMQAAAABK\nEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEAAAAA\nShLGAAAAAChJGAMAAACgJGEMAAAAgJKEMQAAAABKEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAA\nAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEAAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJKEMQAA\nAABKEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEA\nAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJKEMQAAAABKEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQx\nAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEAAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJKE\nMQAAAABKEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICS\nhDEAAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJKEMQAAAABKEsYAAAAAKEkYAwAAAKAkYQwAAACA\nkoQxAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEAAAAAShLGAAAAAChJGAMAAACgJGEMAAAA\ngJKEMQAAAABKEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAA\nAICShDEAAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJKEMQAAAABKEsYAAAAAKEkYAwAAAKAkYQwA\nAACAkoQxAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEAAAAAShLGAAAAAChJGAMAAACgJGEM\nAAAAgJKEMQAAAABKEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoSxgAAAAAoSRgDAAAAoCRh\nDAAAAICShDEAAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJKEMQAAAABKEsYAAAAAKEkYAwAAAKAk\nYQwAAACAkoQxAAAAAEoSxgAAAAAoSRgDAAAAoCRhDAAAAICShDEAAAAAShLGAAAAAChJGAMAAACg\nJGEMAAAAgJKEMQAAAABKEsYAAAAAKEkYAwAAAKAkYQwAAACAkoQxAAAAAEoSxgAAAAAoSRgDAAAA\noCRhDAAAAICShDEAAAAAShLGAAAAAChJGAMAAACgJGEMAAAAgJJGHcaeeuqpLFy4MNOmTUtLS0se\nfPDBEceXLFmSlpaWEdv5558/Yszw8HCWL1+eSZMmZcKECbn88svz0ksvHd2dAAAAAMAojDqMDQ0N\n5eMf/3huu+22tx0zb9687Nq1q7l94xvfGHH8xhtvzAMPPJDe3t5s2rQp+/fvz4IFC3Lo0KHR3wEA\nAAAAHIGxoz1h/vz5mT9//juOaW1tTVdX12GPDQwM5Ktf/WruuuuuXHLJJUmSu+++O93d3Xn00Ucz\nd+7c0U4JAAAAAEbtfXnG2BNPPJHJkyfnV3/1V7N06dLs3r27eWzbtm05ePBgenp6mvumTZuW6dOn\nZ/PmzYe93vDwcAYHB0dsAAAAAHA0jnkYmz9/fu655548/vjj+dKXvpStW7fm4osvzvDwcJKkv78/\n48aNy8SJE0ecN2XKlPT39x/2mmvWrElHR0dz6+7uPtbTBgAAAKCYUf+U8t0sWrSo+ff06dNz3nnn\n5SMf+Ug2bNiQK6644m3PazQaaWlpOeyx1atXZ8WKFc3Pg4OD4hgAAAAAR+V9+SnlT5s6dWo+8pGP\n5Pvf/36SpKurKwcOHMjevXtHjNu9e3emTJly2Gu0tramvb19xAYAAAAAR+N9D2P/+7//m507d2bq\n1KlJkhkzZuSkk07Kxo0bm2N27dqVHTt25IILLni/pwMAAAAASY7gp5T79+/Pf//3fzc//8///E+2\nb9+ezs7OdHZ25qabbsqVV16ZqVOn5oc//GG+8IUvZNKkSfmd3/mdJElHR0euu+66rFy5Mqeddlo6\nOzuzatWqnH322c23VAIAAADA+23UYezZZ5/NRRdd1Pz8k2d/XXvttVm/fn2ee+65/PM//3Nee+21\nTJ06NRdddFHuu+++tLW1Nc+59dZbM3bs2Fx99dV5/fXXM2fOnNxxxx0ZM2bMMbglAAAAAHh3ow5j\ns2fPTqPReNvj//Ef//Gu1zj55JOzbt26rFu3brRfDwAAAADHxPv+jDEAAAAAOBEJYwAAAACUJIwB\nAAAAUJIwBgAAAEBJwhgAAAAAJQljAAAAAJQkjAEAAABQkjAGAAAAQEnCGAAAAAAlCWMAAAAAlCSM\nAQAAAFCSMAYAAABAScIYAAAAACUJYwAAAACUJIwBAAAAUJIwBgAAAEBJwhgAAAAAJQljAAAAAJQk\njAEAAABQkjAGAAAAQEnCGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABAScIYAAAAACUJYwAAAACU\nJIwBAAAAUJIwBgAAAEBJwhgAAAAAJQljAAAAAJQkjAEAAABQkjAGAAAAQEnCGAAAAAAlCWMAAAAA\nlCSMAQAAAFCSMAYAAABAScIYAAAAACUJYwAAAACUJIwBAAAAUJIwBgAAAEBJwhgAAAAAJQljAAAA\nAJQkjAEAAABQkjAGAAAAQEmSZlWOAAAgAElEQVTCGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABA\nScIYAAAAACUJYwAAAACUJIwBAAAAUJIwBgAAAEBJY4/3BDi2PvqnG97x+A+/eNkHNBMAAACAE5sV\nYwAAAACUJIwBAAAAUJIwBgAAAEBJwhgAAAAAJQljAAAAAJQkjAEAAABQkjAGAAAAQEnCGAAAAAAl\nCWMAAAAAlCSMAQAAAFCSMAYAAABAScIYAAAAACUJYwAAAACUJIwBAAAAUJIwBgAAAEBJwhgAAAAA\nJQljAAAAAJQkjAEAAABQkjAGAAAAQEnCGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABAScIYAAAA\nACUJYwAAAACUJIwBAAAAUJIwBgAAAEBJwhgAAAAAJQljAAAAAJQkjAEAAABQkjAGAAAAQEnCGAAA\nAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABAScIYAAAAACUJYwAAAACUJIwBAAAAUJIwBgAAAEBJwhgA\nAAAAJQljAAAAAJQkjAEAAABQkjAGAAAAQEnCGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABAScIY\nAAAAACUJYwAAAACUJIwBAAAAUJIwBgAAAEBJwhgAAAAAJQljAAAAAJQkjAEAAABQkjAGAAAAQEnC\nGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABAScIYAAAAACUJYwAAAACUJIwBAAAAUJIwBgAAAEBJ\nwhgAAAAAJQljAAAAAJQkjAEAAABQkjAGAAAAQEnCGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABA\nScIYAAAAACUJYwAAAACUJIwBAAAAUJIwBgAAAEBJwhgAAAAAJQljAAAAAJQkjAEAAABQkjAGAAAA\nQEnCGAAAAAAlCWMAAAAAlCSMAQAAAFCSMAYAAABAScIYAAAAACWNOow99dRTWbhwYaZNm5aWlpY8\n+OCDI443Go3cdNNNmTZtWsaPH5/Zs2fn+eefHzFm7969Wbx4cTo6OtLR0ZHFixfntddeO7o7AQAA\nAIBRGHUYGxoaysc//vHcdttthz3+N3/zN/nbv/3b3Hbbbdm6dWu6urpy6aWXZt++fc0x11xzTbZv\n356+vr709fVl+/btWbx48ZHfBQAAAACM0tjRnjB//vzMnz//sMcajUb+7u/+Ln/2Z3+WK664Ikly\n5513ZsqUKbn33nvzuc99Lt/73vfS19eXLVu25JOf/GSS5Ctf+UpmzpyZF198MWeeeeZbrjs8PJzh\n/9fenYdbVdaLA3/3OUeOHERQQAYFxMR5zArFW5qpQTh109u1NDNLSxtsMm1En8TKskHzVppTc+m1\nUrvlXBqhOWDgkAOSouIEgQKBwff3Bw/7x2E401qHvVzr83me8zzss/b77u/7ru961zpf9tp76dL6\n44ULF3Y3bAAAAABoJ9fPGHv88cfT3Llz08EHH1z/XWtra9pvv/3S1KlTU0op/eUvf0kDBgyoF8VS\nSmnvvfdOAwYMqD9nTeecc079tssBAwakkSNH5hk2AAAAABWUa2Fs7ty5KaWUhg4d2u73Q4cOrW+b\nO3du2mKLLdZqu8UWW9Sfs6YzzjgjLViwoP7z5JNP5hk2AAAAABXU7Vspu6JWq7V7HBHtfrfm9nU9\nZ3Wtra2ptbU13yABAAAAqLRc3zE2bNiwlFJa651fzz33XP1dZMOGDUvPPvvsWm2ff/75td5pBgAA\nAAC9JdfC2JgxY9KwYcPSDTfcUP/dsmXL0h//+Mc0fvz4lFJK++yzT1qwYEG6884768+544470oIF\nC+rPAQAAAIDe1u1bKV9++eX06KOP1h8//vjjafr06WnzzTdPo0aNSqeeemqaMmVKGjt2bBo7dmya\nMmVKamtrS+9617tSSintuOOOacKECekDH/hA+v73v59SSunEE09MhxxyyDq/kRIAAAAAekO3C2N3\n3XVXevOb31x//IlPfCKllNJxxx2XLrvssnTaaaelJUuWpJNPPjnNnz8/jRs3Ll1//fWpf//+9TY/\n+clP0kc/+tH6t1cedthh6YILLsg6FgAAAADosm4Xxvbff/8UEevdXqvV0uTJk9PkyZPX+5zNN988\n/fjHP+7uSwMAAABAbnL9jDEAAAAAeLVQGAMAAACgkhTGAAAAAKgkhTEAAAAAKklhDAAAAIBKUhgD\nAAAAoJIUxgAAAACoJIUxAAAAACpJYQwAAACASlIYAwAAAKCSFMYAAAAAqCSFMQAAAAAqSWEMAAAA\ngEpSGAMAAACgkhTGAAAAAKgkhTEAAAAAKklhDAAAAIBKUhgDAAAAoJIUxgAAAACoJIUxAAAAACpJ\nYQwAAACASlIYAwAAAKCSFMYAAAAAqCSFMQAAAAAqSWEMAAAAgEpSGAMAAACgkhTGAAAAAKgkhTEA\nAAAAKklhDAAAAIBKUhgDAAAAoJIUxgAAAACoJIUxAAAAACpJYQwAAACASlIYAwAAAKCSFMYAAAAA\nqCSFMQAAAAAqSWEMAAAAgEpSGAMAAACgkhTGAAAAAKgkhTEAAAAAKklhDAAAAIBKUhgDAAAAoJIU\nxgAAAACoJIUxAAAAACpJYQwAAACASlIYAwAAAKCSFMYAAAAAqCSFMQAAAAAqSWEMAAAAgEpSGAMA\nAACgkhTGAAAAAKgkhTEAAAAAKklhDAAAAIBKUhgDAAAAoJIUxgAAAACoJIUxAAAAACpJYQwAAACA\nSlIYAwAAAKCSFMYAAAAAqCSFMQAAAAAqSWEMAAAAgEpSGAMAAACgkhTGAAAAAKgkhTEAAAAAKklh\nDAAAAIBKUhgDAAAAoJIUxgAAAACoJIUxAAAAACpJYQwAAACASlIYAwAAAKCSFMYAAAAAqCSFMQAA\nAAAqSWEMAAAAgEpSGAMAAACgkhTGAAAAAKgkhTEAAAAAKklhDAAAAIBKUhgDAAAAoJIUxgAAAACo\nJIUxAAAAACpJYQwAAACASlIYAwAAAKCSFMYAAAAAqCSFMQAAAAAqSWEMAAAAgEpSGAMAAACgkhTG\nAAAAAKgkhTEAAAAAKklhDAAAAIBKUhgDAAAAoJIUxgAAAACoJIUxAAAAACpJYQwAAACASlIYAwAA\nAKCSFMYAAAAAqCSFMQAAAAAqSWEMAAAAgEpSGAMAAACgkhTGAAAAAKgkhTEAAAAAKklhDAAAAIBK\nUhgDAAAAoJIUxgAAAACoJIUxAAAAACpJYQwAAACASlIYAwAAAKCSFMYAAAAAqCSFMQAAAAAqSWEM\nAAAAgEpSGAMAAACgkhTGAAAAAKgkhTEAAAAAKklhDAAAAIBKUhgDAAAAoJIUxgAAAACoJIUxAAAA\nACpJYQwAAACASlIYAwAAAKCSFMYAAAAAqCSFMQAAAAAqSWEMAAAAgEpSGAMAAACgkhTGAAAAAKgk\nhTEAAAAAKklhDAAAAIBKUhgDAAAAoJIUxgAAAACoJIUxAAAAACpJYQwAAACASlIYAwAAAKCSFMYA\nAAAAqKSWRgdAsWx9+nUdbp/9lUkbKBIAAACA3uUdYwAAAABUksIYAAAAAJWkMAYAAABAJSmMAQAA\nAFBJuRfGJk+enGq1WrufYcOG1bdHRJo8eXIaMWJE6tu3b9p///3T/fffn3cYAAAAANChXnnH2M47\n75yeeeaZ+s+MGTPq2772ta+l8847L11wwQXpr3/9axo2bFg66KCD0ksvvdQboQAAAADAOvVKYayl\npSUNGzas/jNkyJCU0sp3i33rW99Kn/vc59J//ud/pl122SVdfvnlafHixemnP/1pb4QCAAAAAOvU\nK4WxRx55JI0YMSKNGTMm/fd//3eaNWtWSimlxx9/PM2dOzcdfPDB9ee2tram/fbbL02dOnW9/S1d\nujQtXLiw3Q8AAAAAZJF7YWzcuHHpiiuuSH/4wx/SRRddlObOnZvGjx+fXnzxxTR37tyUUkpDhw5t\n12bo0KH1betyzjnnpAEDBtR/Ro4cmXfYAAAAAFRM7oWxiRMnpne84x1p1113TQceeGC67rrrUkop\nXX755fXn1Gq1dm0iYq3fre6MM85ICxYsqP88+eSTeYcNAAAAQMX0yq2Uq+vXr1/adddd0yOPPFL/\ndso13x323HPPrfUustW1tramTTfdtN0PAAAAAGTR64WxpUuXpgcffDANHz48jRkzJg0bNizdcMMN\n9e3Lli1Lf/zjH9P48eN7OxQAAAAAqGvJu8NPfepT6dBDD02jRo1Kzz33XPryl7+cFi5cmI477rhU\nq9XSqaeemqZMmZLGjh2bxo4dm6ZMmZLa2trSu971rrxDAQAAAID1yr0wNmfOnHT00UenF154IQ0Z\nMiTtvffeadq0aWn06NEppZROO+20tGTJknTyySen+fPnp3HjxqXrr78+9e/fP+9QAAAAAGC9ci+M\n/fznP+9we61WS5MnT06TJ0/O+6UBAAAAoMt6/TPGAAAAAKCIFMYAAAAAqCSFMQAAAAAqSWEMAAAA\ngEpSGAMAAACgkhTGAAAAAKgkhTEAAAAAKklhDAAAAIBKUhgDAAAAoJIUxgAAAACoJIUxAAAAACpJ\nYQwAAACASlIYAwAAAKCSFMYAAAAAqCSFMQAAAAAqSWEMAAAAgEpSGAMAAACgkhTGAAAAAKgkhTEA\nAAAAKklhDAAAAIBKUhgDAAAAoJIUxgAAAACoJIUxAAAAACqppdEBUD5bn35dh9tnf2XSBooEAAAA\nYP28YwwAAACASlIYAwAAAKCSFMYAAAAAqCSFMQAAAAAqSWEMAAAAgEpSGAMAAACgkhTGAAAAAKgk\nhTEAAAAAKklhDAAAAIBKUhgDAAAAoJIUxgAAAACoJIUxAAAAACpJYQwAAACASlIYAwAAAKCSFMYA\nAAAAqCSFMQAAAAAqSWEMAAAAgEpSGAMAAACgkhTGAAAAAKgkhTEAAAAAKklhDAAAAIBKUhgDAAAA\noJIUxgAAAACoJIUxAAAAACpJYQwAAACASlIYAwAAAKCSFMYAAAAAqCSFMQAAAAAqSWEMAAAAgEpS\nGAMAAACgkhTGAAAAAKgkhTEAAAAAKklhDAAAAIBKUhgDAAAAoJIUxgAAAACoJIUxAAAAACpJYQwA\nAACASlIYAwAAAKCSFMYAAAAAqCSFMQAAAAAqSWEMAAAAgEpSGAMAAACgkhTGAAAAAKgkhTEAAAAA\nKklhDAAAAIBKUhgDAAAAoJJaGh0ArGnr06/rcPvsr0zq1fYAAABANXjHGAAAAACVpDAGAAAAQCUp\njAEAAABQSQpjAAAAAFSSwhgAAAAAlaQwBgAAAEAlKYwBAAAAUEkKYwAAAABUksIYAAAAAJWkMAYA\nAABAJSmMAQAAAFBJCmMAAAAAVJLCGAAAAACVpDAGAAAAQCUpjAEAAABQSQpjAAAAAFSSwhgAAAAA\nlaQwBgAAAEAlKYwBAAAAUEkKYwAAAABUksIYAAAAAJWkMAYAAABAJSmMAQAAAFBJCmMAAAAAVJLC\nGAAAAACV1NLoAKCItj79ug63z/7KpF5tDwAAAPQ+7xgDAAAAoJIUxgAAAACoJLdSQgF1ditmSm7H\nBAAAgKy8YwwAAACASlIYAwAAAKCS3EoJJeWbNQEAAKBj3jEGAAAAQCUpjAEAAABQSQpjAAAAAFSS\nwhgAAAAAlaQwBgAAAEAl+VZKoNf4ZksAAACKzDvGAAAAAKgkhTEAAAAAKklhDAAAAIBKUhgDAAAA\noJIUxgAAAACoJN9KCRRW1m+19K2YAAAAdMQ7xgAAAACoJIUxAAAAACrJrZQAHWj07ZydtS9CDG5J\nBQAAXq28YwwAAACASlIYAwAAAKCS3EoJQK9r9O2cedwO2ugY8ritFgAAaM87xgAAAACoJIUxAAAA\nACrJrZQAUBGNvh20CDEUYQwAABSHd4wBAAAAUEkKYwAAAABUklspAQA2oCJ8Q2mjb0ktwxiKEINv\nqwWA7LxjDAAAAIBKUhgDAAAAoJLcSgkAABVVhttBGz2GIsRQhnl0azDQKN4xBgAAAEAlKYwBAAAA\nUElupQQAAOBVr9G3gxYhhiLcVguvNt4xBgAAAEAlKYwBAAAAUElupQQAAAByUYbbQYtwWy0bjneM\nAQAAAFBJDS2MXXjhhWnMmDFp4403TnvttVe67bbbGhkOAAAAABXSsFspf/GLX6RTTz01XXjhhWnf\nffdN3//+99PEiRPTAw88kEaNGtWosAAAAAAayi2p+YyhKxr2jrHzzjsvnXDCCen9739/2nHHHdO3\nvvWtNHLkyPQ///M/jQoJAAAAgAppyDvGli1blu6+++50+umnt/v9wQcfnKZOnbrW85cuXZqWLl1a\nf7xgwYKUUkoLFy6s/27F0sWdvu7qz1+XzvpodPsixNBZ+yLEUIUxFCGGMsxjGcZQhBjKMI9lGEMR\nYijDPJZhDEWIoQpjKEIMZZjHMoyhCDGUYR7LMIYixFCGeSzDGIoQQxnmsbtjWPXviOi03epq0d0W\nOXj66afTlltumf785z+n8ePH138/ZcqUdPnll6e///3v7Z4/efLkdOaZZ27oMAEAAAB4FXnyySfT\nVltt1eXnN+wzxlJKqVartXscEWv9LqWUzjjjjPSJT3yi/njFihVp3rx5adCgQet8/sKFC9PIkSPT\nk08+mTbddNMexZa1jzLEYAxiyKt9EWIowxiKEIMxFCOGMoyhCDEYgxjyal+EGMowhiLEYAxiyKt9\nEWIowxiKEIMxvHpiiIj00ksvpREjRnSr34YUxgYPHpyam5vT3Llz2/3+ueeeS0OHDl3r+a2tram1\ntbXd7wYOHNjp62y66aY9nvC8+ihDDMYghrzaFyGGMoyhCDEYQzFiKMMYihCDMYghr/ZFiKEMYyhC\nDMYghrzaFyGGMoyhCDEYw6sjhgEDBnS7v4Z8+H6fPn3SXnvtlW644YZ2v7/hhhva3VoJAAAAAL2l\nYbdSfuITn0jHHntset3rXpf22Wef9IMf/CA98cQT6YMf/GCjQgIAAACgQponT548uREvvMsuu6RB\ngwalKVOmpK9//etpyZIl6Uc/+lHafffdc+m/ubk57b///qmlpee1v6x9lCEGYxBDXu2LEEMZxlCE\nGIyhGDGUYQxFiMEYxJBX+yLEUIYxFCEGYxBDXu2LEEMZxlCEGIyhPDGsS0O+lRIAAAAAGq0hnzEG\nAAAAAI2mMAYAAABAJSmMAQAAAFBJCmMAAAAAVJLCGAAAAACVpDAGAAAAQCU1T548eXKjgyiz448/\nPr3hDW9I/fv37/B5d999dxoxYkTm11u+fHlqavr/9c477rgjzZo1K40YMSI1Nzdn7n9DeeSRR9K1\n116b/vCHP6SpU6emRx99NPXr1y8NGjSo0aH1urxyoSwWLVqUpk2blqZNm5YeeuihtGTJkjR8+PBU\nq9U2yOu//PLL6S9/+Uu644470gMPPJBeeOGFNHjw4NSnT58u95F3Pp955plpl112SW1tbT1q39V1\nKaXez8d///vfac6cOWnAgAGdPrfRubCm7szjKlnX6CKsjXmdZ/7973+nm266Kd16661p3rx5afTo\n0e363ZCef/751KdPn0KcJ7tzTBRN1rUpi57mU0+PqRdeeCHzOIt6vs/jeOhqH3nM4/o8++yzad68\neT0+lrrbPsv1Qm/OQxY9OaaznKuXL1+e/vGPf6QBAwakWq2Wli5dmv73f/83zZgxIw0ZMiRtsskm\nvdo+rz56Q0+uORqtLH+Xrq6n60pvXPN09Xohj79l8lKka7+1RAnNnz8/fvCDH8TnP//5uOiii+Kf\n//xnt/uYN29e3HnnnfHkk0926fn33XffOn822mijuPrqq+uP16dWq8U222wTZ599dsyZM6fb8T79\n9NOx7777RnNzc7zpTW+KefPmxaRJk6JWq0WtVovtttsunn766U77efbZZ+Pmm2+OBQsWRETE3Llz\n46tf/Wqcc8458be//a3DtsuWLYtPf/rT8ZrXvCZe//rXxyWXXNJu+9y5c6OpqanDPv75z3/GYYcd\nFrVaLQYOHBjbbbddjB07NgYOHBhNTU1x+OGH12PriZdffjn++Mc/dvq8xx57LC6//PL4yle+Euee\ne25ceeWVPX7d7uZj1lzIYz90pivzmCWXIiKWL18en/70p6OtrS2ampqiqampns+jR4+O3/72t532\nkSWGV155JT760Y9G3759o1arRWtra/Tp0ydqtVr07ds3Pvaxj8WyZcs67CNrPi9YsGCtn3/+85+x\n0UYbxR133FH/3fpkXZcisudjZ6ZPn95pPuaRC2vqzhqfxzxmXaPzWBuzHpNZx/CRj3wkrr322oiI\nePLJJ2OHHXaI5ubmGDp0aDQ3N8euu+7aoxzrzr78/ve/H//6178iImLFihVx9tln1+ewra0tPv7x\nj8fy5ct77fW7oivHRETPz1N5nCOyrk1r6sl1W9Z8ynpMNTU1xQEHHBA/+clP6jnVXb29vnZ2rs7j\neMjaRx7zuHDhwnj3u98do0aNive85z2xdOnSOPnkk6NWq0VTU1O86U1v6nBfZm2fx/VCHvMQ0fN1\nIY9jOuu5evr06TFs2LBoamqK3XbbLZ588snYZZddol+/frHJJpvEZpttFnfeeWevtc+rj+9+97vx\nlre8JY466qi46aab2m17/vnnY8yYMR22z3rN0dt/B3Tlb4A8/i7NOo+r68k5Juu60FvXPKvr7Hoh\nj7Up637IYx7yzIWOlKIw9o53vCOuuuqqiIi4//77Y/DgwTFkyJAYN25cDB06NIYNGxYPPPDAetuf\nccYZsWjRoohYuZh84AMfqC/mTU1N8fa3vz2WLFnSYQyrnrvqgF/9Z/W+Omr/gQ98IIYOHRotLS0x\nadKkuPrqq+Pf//53l+bg2GOPjfHjx8dvf/vbeOc73xnjx4+PN77xjTFnzpx44okn4o1vfGOccsop\nHfZxyy23RL9+/aJWq8Xw4cPjvvvui6222irGjh0b22+/fbS2tsYf/vCH9bb/0pe+FEOHDo1zzz03\nPve5z8WAAQPixBNPrG+fO3du1Gq1Tsex6667xrRp09baNm3atNhtt93iPe95TyezsX6dLSAvv/xy\nHHnkke323bBhw6K5uTk22WSTuOCCCzp9jaz5mDUX8tgPnelsHrPmUkTEZz7zmdhxxx3j17/+dfz+\n97+PN77xjfHVr341HnzwwfjCF77QaR9ZY/joRz8aW265Zfz85z+P+fPn138/f/78+PnPfx4jR46M\nj33sYx2OIWs+r7qwXPOnO+tKlnVpVR9Z8rEzXSkCZM2FrGt8HvOYdY3Omkt5HJNZxzB8+PD62vdf\n//VfceCBB8bzzz8fEREvvvhiHHLIIXHkkUd2GEPWfdnU1BTPPvtsRER873vfi379+sU3vvGN+POf\n/xznn39+DBgwIM4///xee/2u6O3zVB7niKxrU9bzZET2fMp6TNVqtZgwYUL06dMnNttss/jwhz8c\n9957b4cxr6uPRq6vWY+HPPrIYx4//OEPxw477BDf+c53Yv/994/DDz88dtlll7j99tvjT3/6U+yy\nyy7x2c9+ttfa53G9kHUesq4LWY/piOzn6oMPPjiOPPLImDFjRnzsYx+LnXbaKY466qhYtmxZvPLK\nK3HMMcfEgQce2Gvt8+jj29/+drS1tcUpp5wSxxxzTLS2tsaUKVPq27tSlMp6zdHbfwd05bot6/VC\n1nnM4xyTdV3I45qnM53ti6xrUx75nHUe8oihq0pRGBs8eHA8/PDDERExceLEeNe73hVLly6NiJUX\nrieccEIcfPDB622/+kn97LPPjiFDhsRVV10VTz31VFxzzTWx5ZZbxllnndVhDLvvvntMmjQpHnzw\nwZg9e3bMnj07Hn/88WhpaYkbbrih/rv1qdVq8eyzz8Yrr7wSV155ZbztbW+rV1NPO+20eOihhzp8\n/eHDh8df/vKXiFiZZLVaLW688cb69ptvvjm22WabDvvYd99945RTTomXXnopzj333Nhqq63aLVqf\n+tSnYvz48ettv+2228Y111xTf/zoo4/G2LFj473vfW+sWLGiS4k7YMCAdV6krvKXv/wlBgwY0GEf\nHelsATnxxBNj3333jenTp8dDDz0U73jHO+K0006LRYsWxQ9/+MNoa2uLn/zkJx2+RtZ8zJoLeeyH\nznQ2j1lzKSJixIgR8ac//an+eM6cObHJJpvU/yf1rLPOin322afXYhg8ePBa/yuxuhtvvDEGDx7c\n4Riy5vOWW24ZkyZNiptvvjluvfXWuPXWW+OWW26J5ubmuPTSS+u/W5+s61JE9nzcc889O/zZYYcd\nOs3HrLmQdY3PYx6zrtFZcymPYzLrGDbeeOOYNWtWRERstdVWcccdd7TbPmPGjE6Pqaz7clU+R0S8\n/vWvj/POO6/d9osuuih22223Xnv9iOzHRNbzVB7niKxrU9bzZET2fMp6TK3Kpeeffz6+/vWvx847\n7xxNTU3x2te+Ni688MIuvSMh6/ramc7O1VmPhzz6yGMeR44cGTfffHNERDz11FNRq9XavTvpuuuu\ni+23377X2udxvZB1HrKuC1mP6Yjs5+rNNtus/gf04sWLo7m5ud1xPXPmzBg0aFCvtc+jj5122qnd\nPE+dOjW22GKL+MIXvhARXfsjPus1R2//HdCVwljW64Ws85jHOSbrupDHNU/W64Wsa1Me+Zx1HvKI\noatKURjr27dvPProoxGx8kC855572m3/+9//3qWLm4iIPfbYI374wx+22/6LX/widtxxxw5jWLp0\naf1/FlZ//ZaWlrj//vs7HcPqMawyZ86cOOuss2KbbbaJpqameOMb37je9htvvHE88cQT9cf9+vWL\nRx55pP74H//4R/Tt27fDGDbddNP6PL7yyivR0tLS7n+rHn744Q7nsW/fvvH444+3+91TTz0V22+/\nfbz73e+Op556qkuFsTUPmNVNmzatwxg222yzDn823XTTTheQu+66q/543rx5sfHGG9ffIXDBBRfE\nHnvs0eEY8szHVbqTC3ZL/KwAAB0pSURBVHnsh6zzmDWXIiL69+8fjz32WP3x8uXLo6WlJZ555pmI\nWPk/QG1tbb0WQ79+/Tp8q/q9994b/fr163AMWfP5xRdfjCOOOCLe/OY3t3ubcVfXlazrUkT2fGxt\nbY3jjjsuJk+evM6fk046qdN8zJoLWdf4POYx6xqdNZfyOCazjmG33XaLn//85xERseOOO8YNN9zQ\nbvvUqVNj88037zCGrPuyVqvFc889FxEr1/s1j/HHHnssNtlkk157/Yjsx0TW81Qe54isa1PW82RE\n9nzKekyta22cOnVqvO9974v+/ftHW1tbHHvssR2OIev6mvVcnfV4yKOPPOaxtbW13drU1tYWf//7\n3+uPZ8+e3eE5Imv7PK4Xss5D1nUh6zEdkf1cPXDgwHoxY9myZdHc3Bx33313ffuDDz4Ym222Wa+1\nz6OPda2vM2fOjKFDh8bpp5/epT/is15zZF3js64rEdmvF7LOYx7nmKzrQh7XPFmvF7KuTXnkc9Z5\nyCOGripFYWzcuHHxgx/8ICJWVlavvvrqdtuvv/76GDZs2Hrbr35SHzRoUMyYMaPd9scff7zDxF/d\n7373u9hqq61iypQp9RNCVxax1f8Xel1uvPHGeNe73rXe7aNGjWp3gfeZz3wmXnzxxfrj6dOnd1qV\nHjx4cMycOTMiIhYtWhRNTU31an/EynveO+pjzJgx7f43YJWnnnoqtttuuzjwwAM7Tdxjjjkmdttt\nt/jrX/+61ra//vWvsccee3R4YdDW1haf/OQn47LLLlvnz5lnntlhDKufECNWnhRbWlrq+fHwww/H\nxhtv3OEYsuZj1lzIYz9kncesuRQRMX78+Pjyl79cf/yzn/0sBg4cWH88Y8aMDi9OssZwyCGHxFve\n8paYO3fuWtvmzp0bBx10UBx66KEdjiFrPq9y4YUXxogRI+KnP/1pRHTvQjWi5+tSRPZ83GuvveLC\nCy9c7/Z7772303zMmgt5rfFZ5jHrGp01l/I4JrOO4dJLL42tttoqbrnllrjiiitixx13jBtvvDGe\neuqpuPnmm2PXXXeN97///R3GkHVf1mq1uOKKK+I3v/lNjBw5cq13DM2cOTM23XTTXnv9iOzHRNbz\nVB7niFV6ujZlPU9GZM+nrMdUR2vjyy+/HBdffHGn78LMur5mPVdnPR7y6COPeRwxYkS74sXRRx/d\nrs+ZM2d2eI7I2j6P64Ws85DH9WtEtuuNrOfqt7zlLXHCCSfEnDlz4swzz4xtt902jj/++Pr2k08+\nucNCcdb2efQxcuTIdu+aW+X++++PoUOHxrHHHtvl9bWn1xxZ1/is60pE9uuFrPOYxzkm67qQxzVP\n1uuFrGtTHvmcdR7yPKY6U4rC2LXXXhubb755XHrppXHppZfG1ltvHRdffHH8+c9/jksuuSRGjhwZ\nn/70p9fbvlarxdlnnx3f/va313obcMTKg7ez/2FY3dy5c2PixInxH//xH5neMdYdhx12WHzrW99a\n7/YLLrggDjjggA77OPzww+OQQw6J22+/PU488cR43eteF5MmTYqXX345Fi1aFEceeWRMmDBhve1P\nOOGEeN/73rfObXPmzIltt92208SdP39+TJgwIWq1Wmy22Wax/fbbxw477BCbbbZZNDU1xcSJE9vd\nI72m8ePHdzgPnb3996CDDmp3e9G5554bw4cPrz++5557Ov3jMY98zJILeeyHrPOYNZciVv5B0Nra\nGm94wxviTW96U7S0tMQ3v/nN+vZzzz23w5zOGsMTTzwRu+yyS7S0tMQee+wRb33rW2PChAmxxx57\nREtLS/1DWTuSNZ9Xd//998fuu+8eRx99dLcLYxE9W5cisufjxz72sQ4/v+DRRx+N/fffv8M+suZC\nnmt8T+cx6xqdNZfyOCbzOM984xvfiLa2tujbt2/06dOn3WfZHHHEEfHSSy912D7rvlzz81rOPvvs\ndtsvuuii2HPPPXvt9SOyHxNZz1N5nCNW15O1Ket5cpUs+ZT1mMq6NubRR9ZzddbjIY8+8pjHCRMm\nxPe+9731br/00ks7LCplbZ/H9ULWecjj+nWVnl5vZD1X33nnnbH55ptHU1NTbLHFFnH//ffHuHHj\nYtiwYTFixIjo27fvOgs+ebXPo4+jjz56vev7zJkzY8iQId1aX3tyzZF1jc+6rkRkv17IOo95nGOy\nrgsR2a95sl4vZF2b8srnLPOQ9zHVkVIUxiIirrzyythqq63W+rDCjTfeOE499dQOP8h09OjRsfXW\nW9d/1jyQv/nNb8bee+/d7Zi+/e1vxxFHHNGlb6q69dZb45VXXun2a3TVnXfeudb/bK/p4Ycfjm23\n3TZqtVrsvPPO8dRTT8Vhhx0WLS0t0dLSEkOGDGlXOV/T7Nmz4/e///16tz/99NNx2WWXdSneBx54\nIC655JKYMmVKTJkyJS655JJ48MEHO2139tlnx+TJk9e7/Yknnoj3vve9691+9913x+abbx7Dhg2L\nUaNGRZ8+feJnP/tZffsFF1zQpQ//z5KPWXMhj/2QdR6z5tIq9913X3z2s5+NT37yk3H99dd3+vy8\nY1i+fHn87ne/iy9+8Ytx4oknxoknnhhf/OIX4//+7/+69c11Pc3nNS1dujQ+/vGPxx577FG/X7+7\nurMuRfT+2tRVWXKhN9b47s5jZ7qyRkesvI2jJ7mU1zGZxxjmz58fv/zlL+MrX/lKTJkyJS699NJ2\n73ToSG+dr1e55pprOlw/e/v1uyLreSrPc/UqPVmbspwnV5clnyJ6fkxddtllmb49MCL7+pr1XN2Z\nzo6HPPrIYx5ffPHFDouYv/vd7+KWW27ptfYR2a8Xss5DXtevq/T0eiPLuToi4qWXXoq77rqr/ofy\nkiVL4uKLL47zzz+/S5+5l7V91j7uu+++tb4FcnUzZ87s8Jhdn+5cc2Rd43t7XYno/Hohj3nMeo7J\nY12IyH6OyirL2pRnPvd0HnrrmFqXWkREKonly5enu+++Oz3++ONpxYoVafjw4WmvvfZK/fv3z9Tv\ntGnTUmtra9pzzz1zirTYXnzxxTRo0KD645tuuiktWbIk7bPPPu1+X1bPPPNMuvbaa9PSpUvTAQcc\nkHbaaace9bN8+fJ0zz33pFmzZuWaj68mRcilIsRAsVVpjS/78dDofbmhXj+v81SjOU9CfsqyLkBe\nnGPojlIVxorg5ptvTrfffnt65plnUnNzc9pmm23SoYcemsaOHduj9mPGjEmHHXbYBmufhzxiKMI4\nGum+++5L99xzT9p///3TmDFj0v3335+++93vphUrVqS3v/3t6a1vfWuvti+Cq666Kk2cODG1tbU1\nOpR2DjjggHTppZem0aNHd+n5WfZFHnPQG7kwffr09Mgjj6Thw4enfffdN9VqtV4dQ0opRUSaPXt2\nGjlyZGppaUnLli1LV199dVq6dGl629velgYPHpyp/+7qzhyklNLSpUtTU1NT2mijjVJKKT322GPp\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bcd381e4a8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#统计每年上映的电影数目，默认是降序排列\n",
    "items_sorted_by_year = df_items_sorted_by_mean_rating_merge['year'].value_counts() \n",
    "\n",
    "fig, ax = plt.subplots(1, 1, figsize=(15, 12))\n",
    "items_sorted_by_year.plot(kind='bar', title='freq')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#以下为协同过滤数据准备"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#字典，用于建立用户和物品的索引\n",
    "from collections import defaultdict\n",
    "\n",
    "#稀疏矩阵，存储打分表\n",
    "import scipy.io as sio\n",
    "import scipy.sparse as ss\n",
    "\n",
    "#数据到文件存储\n",
    "import pickle as cPickle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>rating</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>874965758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>876893171</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>878542960</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>876893119</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>889751712</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  item_id  rating  timestamp\n",
       "0        1        1       5  874965758\n",
       "1        1        2       3  876893171\n",
       "2        1        3       4  878542960\n",
       "3        1        4       3  876893119\n",
       "4        1        5       3  889751712"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#读取训练数据\n",
    "triplet_cols = ['user_id','item_id', 'rating', 'timestamp'] \n",
    "train_path=open(r'C:\\Users\\dell\\Downloads\\电影推荐案例\\3代码类素材\\ml-100k\\ml-100k\\data\\u1.base', encoding='latin-1')\n",
    "df_triplet = pd.read_csv(train_path, sep='\\t', names=triplet_cols)\n",
    "df_triplet.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "943\n",
      "1650\n"
     ]
    }
   ],
   "source": [
    "#统计总的用户数目和物品数目\n",
    "unique_users = df_triplet['user_id'].unique()\n",
    "unique_items = df_triplet['item_id'].unique()\n",
    "\n",
    "n_users = unique_users.shape[0]\n",
    "n_items = unique_items.shape[0]\n",
    "print(n_users)\n",
    "print(n_items)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#建立用户和物品的索引表\n",
    "#本数据集中user_id和item_id都已经是索引了,可以减1，将从1开始编码变成从0开始的编码\n",
    "#下面的代码更通用，可对任意编码的用户和物品重新索引\n",
    "users_index = dict()\n",
    "items_index = dict()\n",
    "\n",
    "for j, u in enumerate(unique_users):\n",
    "    users_index[u] = j\n",
    "    \n",
    "#重新编码活动索引字典    \n",
    "for j, i in enumerate(unique_items):\n",
    "    items_index[i] = j\n",
    "    \n",
    "#保存用户索引表\n",
    "cPickle.dump(users_index, open(\"users_index.pkl\", 'wb'))\n",
    "#保存活动索引表\n",
    "cPickle.dump(items_index, open(\"items_index.pkl\", 'wb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#倒排表\n",
    "#统计每个用户打过分的电影   / 每个电影被哪些用户打过分\n",
    "user_items = defaultdict(set)\n",
    "item_users = defaultdict(set)\n",
    "\n",
    "#用户-物品关系矩阵R, 稀疏矩阵，记录用户对每个电影的打分\n",
    "user_item_scores = ss.dok_matrix((n_users, n_items))\n",
    "\n",
    "#扫描训练数据\n",
    "for line in df_triplet.index:  #对每条记录\n",
    "    cur_user_index = users_index [df_triplet.iloc[line]['user_id']]\n",
    "    cur_item_index = items_index [df_triplet.iloc[line]['item_id']]\n",
    "    \n",
    "    #倒排表\n",
    "    user_items[cur_user_index].add(cur_item_index)    #该用户对这个电影进行了打分\n",
    "    item_users[cur_item_index].add(cur_user_index)    #该电影被该用户打分\n",
    "    \n",
    "    user_item_scores[cur_user_index, cur_item_index] = df_triplet.iloc[line]['rating']\n",
    "\n",
    "\n",
    "##保存倒排表\n",
    "#每个用户打分的电影\n",
    "cPickle.dump(user_items, open(\"user_items.pkl\", 'wb'))\n",
    "##对每个电影打过分的用户\n",
    "cPickle.dump(item_users, open(\"item_users.pkl\", 'wb'))\n",
    "\n",
    "#保存打分矩阵，在UserCF和ItemCF中用到\n",
    "sio.mmwrite(\"user_item_scores\", user_item_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#定义准确率\n",
    "def Precision(train, test, N):\n",
    "    hit = 0\n",
    "    all = 0\n",
    "    for user in train.keys():\n",
    "        tu = test[user]\n",
    "        rank = GetRecommendation(user, N)\n",
    "        for item, pui in rank:\n",
    "            if item in tu:\n",
    "                hit += 1\n",
    "        all += N\n",
    "    return hit / (all * 1.0)\n",
    "#定义召回率\n",
    "def Recall(train, test, N):\n",
    "    hit = 0\n",
    "    all = 0\n",
    "    for user in train.keys():\n",
    "        tu = test[user]\n",
    "        rank = GetRecommendation(user, N)\n",
    "        for item, pui in rank:\n",
    "            if item in tu:\n",
    "                hit += 1\n",
    "        all += len(tu)\n",
    "    return hit / (all * 1.0)\n",
    "#定义覆盖率\n",
    "def Coverage(train, test, N):\n",
    "    recommend_items = set()\n",
    "    all_items = set()\n",
    "    for user in train.keys():\n",
    "        for item in train[user].keys():\n",
    "            all_items.add(item)\n",
    "        rank = GetRecommendation(user, N)\n",
    "        for item, pui in rank:\n",
    "            recommend_items.add(item)\n",
    "    return len(recommend_items) / (len(all_items) * 1.0)\n",
    "#定义受欢迎率\n",
    "def Popularity(train, test, N):\n",
    "    item_popularity = dict()\n",
    "    for user, items in train.items():\n",
    "        for item in items.keys():\n",
    "            if item not in item_popularity:\n",
    "                item_popularity[item] = 0\n",
    "                item_popularity[item] += 1\n",
    "    ret = 0\n",
    "    n=0\n",
    "    for user in train.keys():\n",
    "        rank = GetRecommendation(user, N)\n",
    "        for item, pui in rank:\n",
    "            ret += math.log(1 + item_popularity[item])\n",
    "            n += 1\n",
    "    ret /= n * 1.0\n",
    "    return ret"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "from math import sqrt\n",
    "\n",
    "def rmse(prediction, ground_truth):\n",
    "    prediction = prediction[ground_truth.nonzero()].flatten() \n",
    "    ground_truth = ground_truth[ground_truth.nonzero()].flatten()\n",
    "    return sqrt(mean_squared_error(prediction, ground_truth))\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def evaluate(self):\n",
    "        ''' print evaluation result: precision, recall, coverage and popularity '''\n",
    "        print ('Evaluation start...', file=sys.stderr)\n",
    "\n",
    "        N = self.n_rec_movie\n",
    "        #  varables for precision and recall\n",
    "        hit = 0\n",
    "        rec_count = 0\n",
    "        test_count = 0\n",
    "        # varables for coverage\n",
    "        all_rec_movies = set()\n",
    "        # varables for popularity\n",
    "        popular_sum = 0\n",
    "\n",
    "        for i, user in enumerate(self.trainset):\n",
    "            if i % 500 == 0:\n",
    "                print ('recommended for %d users' % i, file=sys.stderr)\n",
    "            test_movies = self.testset.get(user, {})\n",
    "            rec_movies = self.recommend(user)\n",
    "            for movie, _ in rec_movies:\n",
    "                if movie in test_movies:\n",
    "                    hit += 1\n",
    "                all_rec_movies.add(movie)\n",
    "                popular_sum += math.log(1 + self.movie_popular[movie])\n",
    "            rec_count += N\n",
    "            test_count += len(test_movies)\n",
    "\n",
    "        precision = hit / (1.0 * rec_count)\n",
    "        recall = hit / (1.0 * test_count)\n",
    "        coverage = len(all_rec_movies) / (1.0 * self.movie_count)\n",
    "        popularity = popular_sum / (1.0 * rec_count)\n",
    "\n",
    "        print ('precision=%.4f\\trecall=%.4f\\tcoverage=%.4f\\tpopularity=%.4f' %\n",
    "               (precision, recall, coverage, popularity), file=sys.stderr)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以下为基于物品的协同过滤"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import os\n",
    "#距离\n",
    "import scipy.spatial.distance as ssd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#用户和item的索引\n",
    "users_index = cPickle.load(open(\"users_index.pkl\", 'rb'))\n",
    "items_index = cPickle.load(open(\"items_index.pkl\", 'rb'))\n",
    "\n",
    "n_users = len(users_index)\n",
    "n_items = len(items_index)\n",
    "    \n",
    "#倒排表\n",
    "##每个用户打过分的电影\n",
    "user_items = cPickle.load(open(\"user_items.pkl\", 'rb'))\n",
    "##对每个电影打过分的事用户\n",
    "item_users = cPickle.load(open(\"item_users.pkl\", 'rb'))\n",
    "\n",
    "#用户-物品关系矩阵R\n",
    "user_item_scores = sio.mmread(\"user_item_scores\")#.todense()\n",
    "user_item_scores = user_item_scores.tocsr()#转换成csr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#计算每个用户平均打分\n",
    "users_mu = np.zeros(n_users)\n",
    "for u in range(n_users):  \n",
    "    n_user_items = 0\n",
    "    r_acc = 0.0\n",
    "    \n",
    "    for i in user_items[u]:  #用户打过分的item\n",
    "        r_acc += user_item_scores[u,i]\n",
    "        n_user_items += 1\n",
    " \n",
    "    users_mu[u] = r_acc/n_user_items"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#计算两个物品间的相似度\n",
    "def item_similarity(iid1, iid2):\n",
    "    su={}  #有效item（两个用户均有打分的item）的集合\n",
    "    for user in item_users[iid1]:  #对iid1所有打过分的用户\n",
    "        if user in item_users[iid2]:  #如果该用户对iid2也打过分\n",
    "            su[user]=1  #该用户为一个有效user\n",
    "        \n",
    "    n=len(su)   #有效item数，有效item为即对uid对Item打过分，uid2也对Item打过分\n",
    "    if (n==0):  #没有共同打过分的item，相似度设为0？\n",
    "        similarity=0  \n",
    "        return similarity  \n",
    "        \n",
    "    #iid1的有效打分(减去用户的平均打分)\n",
    "    s1=np.array([user_item_scores[user,iid1]-users_mu[user] for user in su])\n",
    "        \n",
    "    #iid2的有效打分(减去用户的平均打分)\n",
    "    s2=np.array([user_item_scores[user,iid2]-users_mu[user] for user in su])  \n",
    "    \n",
    "    similarity = 1 - ssd.cosine(s1, s2) \n",
    "    if( np.isnan(similarity) ):  #分母为0（s1或s2中所有元素为0）\n",
    "        similarity = 0.0\n",
    "    return similarity  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "i=0 \n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\scipy\\spatial\\distance.py:505: RuntimeWarning: invalid value encountered in double_scalars\n",
      "  dist = 1.0 - np.dot(u, v) / (norm(u) * norm(v))\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "i=100 \n",
      "i=200 \n",
      "i=300 \n",
      "i=400 \n",
      "i=500 \n",
      "i=600 \n",
      "i=700 \n",
      "i=800 \n",
      "i=900 \n",
      "i=1000 \n",
      "i=1100 \n",
      "i=1200 \n",
      "i=1300 \n",
      "i=1400 \n",
      "i=1500 \n",
      "i=1600 \n"
     ]
    }
   ],
   "source": [
    "#计算所有物品两两间相似度\n",
    "items_similarity_matrix = np.matrix(np.zeros(shape=(n_items, n_items)), float)\n",
    "\n",
    "for i in range(n_items):\n",
    "    items_similarity_matrix[i,i] = 1.0\n",
    "    \n",
    "    #打印进度条以得到进度\n",
    "    if(i % 100 == 0):\n",
    "        print (\"i=%d \" % (i) )\n",
    "\n",
    "    for j in range(i+1,n_items):   #items by user \n",
    "        items_similarity_matrix[j,i] = item_similarity(i, j)\n",
    "        items_similarity_matrix[i,j] = items_similarity_matrix[j,i]\n",
    "\n",
    "cPickle.dump(items_similarity_matrix, open(\"items_similarity.pkl\", 'wb')) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#定义计算所有物品间相似度\n",
    "def items_similarity(n_items ):\n",
    "    items_similarity_matrix = np.matrix(np.zeros(shape=(n_items, n_items)), float)\n",
    "\n",
    "    for i in range(n_items):\n",
    "        items_similarity_matrix[i,i] = 1.0\n",
    "    \n",
    "        #打印进度条\n",
    "        if(i % 100 == 0):\n",
    "            print (\"i=:%d \" % (i) )\n",
    "\n",
    "        for j in range(i+1,n_items):   #items by user \n",
    "            items_similarity_matrix[j,i] = item_similarity(i, j)\n",
    "            items_similarity_matrix[i,j] = items_similarity_matrix[j,i]\n",
    "\n",
    "    cPickle.dump(items_similarity_matrix, open(\"items_similarity.pkl\", 'wb'))\n",
    "    return items_similarity_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#所有用户之间的相似度\n",
    "#items_similarity_matrix = cPickle.load(open(\"items_similarity.pkl\", 'rb'))\n",
    "#items_similarity_matrix = items_similarity(n_users)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "### 预测用户对item的打分，利用用户打过分的item与所有item的相似度计算预测打分\n",
    "def Item_CF_pred1(uid, iid): \n",
    "    sim_accumulate=0.0  \n",
    "    rat_acc=0.0 \n",
    "    \n",
    "    for item_id in user_items[uid]:  #对用户打过分的item\n",
    "        #计算当前用户打过分item与其他item之间的相似度\n",
    "        #sim = item_similarity(item_id, iid)\n",
    "        sim = items_similarity_matrix[item_id, iid]\n",
    "        \n",
    "        #由于相似性可能为负，而用户打过分的item又不多（与iid不相似的item占多数）预测打分为负\n",
    "        if sim != 0: \n",
    "            rat_acc += sim * (user_item_scores[uid, item_id])   #用户user对item i的打分\n",
    "            sim_accumulate += np.abs(sim)                 \n",
    "        \n",
    "    if sim_accumulate != 0: #no same user rated,return average rates of the data  \n",
    "        score = rat_acc/sim_accumulate\n",
    "    else:   #no items the same user rated,return average rates of the user  \n",
    "        score = users_mu[uid]\n",
    "    \n",
    "    if score <0:\n",
    "        score = 0.0\n",
    "    \n",
    "    return score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "### 预测用户对item的打分, 取该用户n_Knns最相似的物品\n",
    "def Item_CF_pred2(uid, iid, n_Knns): \n",
    "    sim_accumulate=0.0  \n",
    "    rat_acc=0.0 \n",
    "    n_nn_items = 0\n",
    "    \n",
    "    #相似度排序\n",
    "    cur_items_similarity = np.array(items_similarity_matrix[iid,:])\n",
    "    cur_items_similarity = cur_items_similarity.flatten()\n",
    "    sort_index = sorted(((e,i) for i,e in enumerate(list(cur_items_similarity))), reverse=True)\n",
    "    \n",
    "    for i in range(0,len(sort_index)):\n",
    "        cur_item_index = sort_index[i][1]\n",
    "        \n",
    "        if n_nn_items >= n_Knns:  #相似的items已经足够多（>n_Knns）\n",
    "            break;\n",
    "        \n",
    "        if cur_item_index in user_items[uid]: #对用户打过分的item\n",
    "           #计算当前用户打过分item与其他item之间的相似度\n",
    "            #sim = item_similarity(cur_item_index, iid)\n",
    "            sim = items_similarity_matrix[iid, cur_item_index]\n",
    "            \n",
    "            if sim != 0: \n",
    "                rat_acc += sim * (user_item_scores[uid, cur_item_index])   #用户user对item i的打分\n",
    "                sim_accumulate += np.abs(sim)  \n",
    "        \n",
    "            n_nn_items += 1\n",
    "        \n",
    "    if sim_accumulate != 0:  \n",
    "        score = rat_acc/sim_accumulate\n",
    "    else:   #no similar items,return average rates of the user   \n",
    "        score = users_mu[uid]\n",
    "    \n",
    "    if score <0:\n",
    "        score = 0.0\n",
    "    \n",
    "    return score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "### 预测用户对item的打分, 取所有item中n_Knns最相似的物品\n",
    "def Item_CF_pred3(uid, iid, n_Knns): \n",
    "    sim_accumulate=0.0  \n",
    "    rat_acc=0.0 \n",
    "    \n",
    "    #相似度排序\n",
    "    cur_items_similarity = np.array(items_similarity_matrix[iid,:])\n",
    "    cur_items_similarity = cur_items_similarity.flatten()\n",
    "    sort_index = sorted(((e,i) for i,e in enumerate(list(cur_items_similarity))), reverse=True)[0: n_Knns]\n",
    "    \n",
    "    for i in range(0,len(sort_index)):\n",
    "        cur_item_index = sort_index[i][1]\n",
    "        \n",
    "        if cur_item_index in user_items[uid]: #对用户打过分的item\n",
    "           #计算当前用户打过分item与其他item之间的相似度\n",
    "            #sim = item_similarity(cur_item_index, iid)\n",
    "            sim = items_similarity_matrix[iid, cur_item_index]\n",
    "            \n",
    "            if sim != 0: \n",
    "                rat_acc += sim * (user_item_scores[uid, cur_item_index])   #用户user对item i的打分\n",
    "                sim_accumulate += np.abs(sim)  \n",
    "        \n",
    "    if sim_accumulate != 0: \n",
    "        score = rat_acc/sim_accumulate\n",
    "    else:   #no items the same user rated,return average rates of the user  \n",
    "        score = users_mu[uid]\n",
    "    \n",
    "    if score <0:\n",
    "        score = 0.0\n",
    "    \n",
    "    return score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#user：用户\n",
    "#返回推荐items及其打分（DataFrame）\n",
    "def recommend(user):\n",
    "    cur_user_id = users_index[user]\n",
    "    \n",
    "    #训练集中该用户打过分的item\n",
    "    cur_user_items = user_items[cur_user_id]\n",
    "\n",
    "    #该用户对所有item的打分\n",
    "    user_items_scores = np.zeros(n_items)\n",
    "\n",
    "    #预测打分\n",
    "    for i in range(n_items):  # all items \n",
    "        if i not in cur_user_items: #训练集中没打过分\n",
    "            user_items_scores[i] = Item_CF_pred2(cur_user_id, i, 20)  #预测打分\n",
    "    \n",
    "    #推荐\n",
    "    #Sort the indices of user_item_scores based upon their value，Also maintain the corresponding score\n",
    "    sort_index = sorted(((e,i) for i,e in enumerate(list(user_items_scores))), reverse=True)\n",
    "    \n",
    "    #Create a dataframe from the following\n",
    "    columns = ['item_id', 'score']\n",
    "    df = pd.DataFrame(columns=columns)\n",
    "         \n",
    "    #Fill the dataframe with top 20 (n_rec_items) item based recommendations\n",
    "    #sort_index = sort_index[0:n_rec_items]\n",
    "    #Fill the dataframe with all items based recommendations\n",
    "    for i in range(0,len(sort_index)):\n",
    "        cur_item_index = sort_index[i][1] \n",
    "        cur_item = list (items_index.keys()) [list (items_index.values()).index (cur_item_index)]\n",
    "            \n",
    "        if ~np.isnan(sort_index[i][0]) and cur_item_index not in cur_user_items:\n",
    "            df.loc[len(df)]=[cur_item, sort_index[i][0]]\n",
    "    \n",
    "    return df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "#读取测试数据\n",
    "triplet_cols = ['user_id','item_id', 'rating', 'timestamp'] \n",
    "\n",
    "test_path=open(r'C:\\Users\\dell\\Downloads\\电影推荐案例\\3代码类素材\\ml-100k\\ml-100k\\data\\u1.test',encoding='latin-1')\n",
    "df_triplet_test = pd.read_csv(test_path, sep='\\t', names=triplet_cols, )\n",
    "#df_triplet_test.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "599 is a new item.\n",
      "\n",
      "711 is a new item.\n",
      "\n",
      "814 is a new item.\n",
      "\n",
      "830 is a new item.\n",
      "\n",
      "852 is a new item.\n",
      "\n",
      "857 is a new item.\n",
      "\n",
      "1156 is a new item.\n",
      "\n",
      "1236 is a new item.\n",
      "\n",
      "1309 is a new item.\n",
      "\n",
      "1310 is a new item.\n",
      "\n",
      "1320 is a new item.\n",
      "\n",
      "1343 is a new item.\n",
      "\n",
      "1348 is a new item.\n",
      "\n",
      "1364 is a new item.\n",
      "\n",
      "1373 is a new item.\n",
      "\n",
      "1457 is a new item.\n",
      "\n",
      "1458 is a new item.\n",
      "\n",
      "1492 is a new item.\n",
      "\n",
      "1493 is a new item.\n",
      "\n",
      "1498 is a new item.\n",
      "\n",
      "1505 is a new item.\n",
      "\n",
      "1520 is a new item.\n",
      "\n",
      "1533 is a new item.\n",
      "\n",
      "1536 is a new item.\n",
      "\n",
      "1543 is a new item.\n",
      "\n",
      "1557 is a new item.\n",
      "\n",
      "1561 is a new item.\n",
      "\n",
      "1562 is a new item.\n",
      "\n",
      "1563 is a new item.\n",
      "\n",
      "1565 is a new item.\n",
      "\n",
      "1582 is a new item.\n",
      "\n",
      "1586 is a new item.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "#统计总的用户\n",
    "unique_users_test = df_triplet_test['user_id'].unique()\n",
    "\n",
    "#为每个用户推荐的item的数目\n",
    "n_rec_items = 10\n",
    "\n",
    "#性能评价参数初始化，用户计算Percison和Recall\n",
    "n_hits = 0\n",
    "n_total_rec_items = 0\n",
    "n_test_items = 0\n",
    "\n",
    "#所有被推荐商品的集合（对不同用户），用于计算覆盖度\n",
    "all_rec_items = set()\n",
    "\n",
    "#残差平方和，用与计算RMSE\n",
    "rss_test = 0.0\n",
    "\n",
    "#对每个测试用户\n",
    "for user in unique_users_test:\n",
    "    #测试集中该用户打过分的电影（用于计算评价指标的真实值）\n",
    "    if user not in users_index:   #user在训练集中没有出现过，新用户不能用协同过滤\n",
    "        print(str(user) + ' is a new user.\\n')\n",
    "        continue\n",
    "   \n",
    "    user_records_test= df_triplet_test[df_triplet_test.user_id == user]\n",
    "    \n",
    "    #对每个测试用户，计算该用户对训练集中未出现过的商品的打分，并基于该打分进行推荐（top n_rec_items）\n",
    "    #返回结果为DataFrame\n",
    "    rec_items = recommend(user)\n",
    "    \n",
    "    for i in range(n_rec_items):\n",
    "        item = rec_items.iloc[i]['item_id']\n",
    "        \n",
    "        if item in user_records_test['item_id'].values:\n",
    "            n_hits += 1\n",
    "        all_rec_items.add(item)\n",
    "    \n",
    "    #计算rmse\n",
    "    for i in range(user_records_test.shape[0]):\n",
    "        item = user_records_test.iloc[i]['item_id']\n",
    "        score = user_records_test.iloc[i]['rating']\n",
    "        \n",
    "        df1 = rec_items[rec_items.item_id == item]\n",
    "        if(df1.shape[0] == 0): #item在训练集中没有出现过，新item不能被协同过滤推荐\n",
    "            print(str(item) + ' is a new item.\\n')\n",
    "            continue\n",
    "        pred_score = df1['score'].values[0]\n",
    "        rss_test += (pred_score - score)**2     #残差平方和\n",
    "    \n",
    "    #推荐的item总数\n",
    "    n_total_rec_items += n_rec_items\n",
    "    \n",
    "    #真实item的总数\n",
    "    n_test_items += user_records_test.shape[0]\n",
    "\n",
    "#Precision & Recall\n",
    "precision = n_hits / (1.0*n_total_rec_items)\n",
    "recall = n_hits / (1.0*n_test_items)\n",
    "\n",
    "#覆盖度：推荐商品占总需要推荐商品的比例\n",
    "coverage = len(all_rec_items) / (1.0* n_items)\n",
    "\n",
    "#打分的均方误差\n",
    "rmse=np.sqrt(rss_test / df_triplet_test.shape[0])  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0579520697167756"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precision"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0133"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.37212121212121213"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "coverage"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.2799604131942894"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rmse"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以下为基于用户的协同过滤"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#计算每个用户平均打分\n",
    "users_mu = np.zeros(n_users)\n",
    "for u in range(n_users):  \n",
    "    n_user_items = 0\n",
    "    r_acc = 0.0\n",
    "    \n",
    "    for i in user_items[u]:  #用户打过分的item\n",
    "        r_acc += user_item_scores[u,i]\n",
    "        n_user_items += 1\n",
    " \n",
    "    users_mu[u] = r_acc/n_user_items"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#计算两个用户之间的相似度\n",
    "def user_similarity(uid1, uid2 ):\n",
    "    si={}  #有效item（两个用户均有打分的item）的集合\n",
    "    for item in user_items[uid1]:  #uid1所有打过分的Item1\n",
    "        if item in user_items[uid2]:  #如果uid2也对该Item打过分\n",
    "            si[item]=1  #item为一个有效item\n",
    "        \n",
    "    n=len(si)   #有效item数，有效item为即对uid对Item打过分，uid2也对Item打过分\n",
    "    if (n==0):  #没有共同打过分的item，相似度设为0？\n",
    "        similarity=0.0  \n",
    "        return similarity  \n",
    "        \n",
    "    #用户uid1的有效打分(减去该用户的平均打分)\n",
    "    s1=np.array([user_item_scores[uid1,item]-users_mu[uid1] for item in si])  \n",
    "        \n",
    "    #用户uid2的有效打分(减去该用户的平均打分)\n",
    "    s2=np.array([user_item_scores[uid2,item]-users_mu[uid2] for item in si])  \n",
    "        \n",
    "    similarity = 1 - ssd.cosine(s1, s2) \n",
    "    \n",
    "    if np.isnan(similarity): #s1或s2的l2模为0（全部等于该用户的平均打分）\n",
    "        similarity = 0.0\n",
    "    return similarity  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ui=0 \n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\scipy\\spatial\\distance.py:505: RuntimeWarning: invalid value encountered in double_scalars\n",
      "  dist = 1.0 - np.dot(u, v) / (norm(u) * norm(v))\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ui=100 \n",
      "ui=200 \n",
      "ui=300 \n",
      "ui=400 \n",
      "ui=500 \n",
      "ui=600 \n",
      "ui=700 \n",
      "ui=800 \n",
      "ui=900 \n"
     ]
    }
   ],
   "source": [
    "#计算所有用户 之间的相似度\n",
    "users_similarity_matrix = np.matrix(np.zeros(shape=(n_users, n_users)), float)\n",
    "\n",
    "for ui in range(n_users):\n",
    "    users_similarity_matrix[ui,ui] = 1.0\n",
    "    \n",
    "    #打印进度条\n",
    "    if(ui % 100 == 0):\n",
    "        print (\"ui=%d \" % (ui))\n",
    "\n",
    "    for uj in range(ui+1,n_users):   \n",
    "        users_similarity_matrix[uj,ui] = user_similarity(ui, uj)\n",
    "        users_similarity_matrix[ui,uj] = users_similarity_matrix[uj,ui]\n",
    "\n",
    "cPickle.dump(users_similarity_matrix, open(\"users_similarity.pkl\", 'wb')) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "### 预测用户对item的打分\n",
    "def User_CF_pred(uid, iid): \n",
    "    sim_accumulate=0.0  \n",
    "    rat_acc=0.0 \n",
    "    for user_id in item_users[iid]:  #对item iid打过分的所有用户\n",
    "        #计算当前用户与给item i打过分的用户之间的相似度\n",
    "        #sim = user_similarity(user_id, uid)\n",
    "        sim = users_similarity_matrix[user_id,uid]\n",
    "            \n",
    "        if sim != 0: \n",
    "            rat_acc += sim * (user_item_scores[user_id,iid] - users_mu[user_id])   #用户user对item i的打分\n",
    "            sim_accumulate += np.abs(sim)  \n",
    "        \n",
    "    if sim_accumulate != 0:  \n",
    "        score = users_mu[uid] + rat_acc/sim_accumulate\n",
    "    else: #no similar users,return average rates of the user \n",
    "        score = users_mu[uid]\n",
    "    \n",
    "    return score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#user：用户\n",
    "#返回推荐items及其打分（DataFrame）\n",
    "def recommend(user):\n",
    "    cur_user_id = users_index[user]\n",
    "    \n",
    "    #训练集中该用户打过分的item\n",
    "    cur_user_items = user_items[cur_user_id]\n",
    "\n",
    "    #该用户对所有item的打分\n",
    "    user_items_scores = np.zeros(n_items)\n",
    "\n",
    "    #预测打分\n",
    "    for i in range(n_items):  # all items \n",
    "        if i not in cur_user_items: #训练集中没打过分\n",
    "            user_items_scores[i] = User_CF_pred(cur_user_id, i)  #预测打分\n",
    "    \n",
    "    #推荐\n",
    "    #Sort the indices of user_item_scores based upon their value，Also maintain the corresponding score\n",
    "    sort_index = sorted(((e,i) for i,e in enumerate(list(user_items_scores))), reverse=True)\n",
    "    \n",
    "    #Create a dataframe from the following\n",
    "    columns = ['item_id', 'score']\n",
    "    df = pd.DataFrame(columns=columns)\n",
    "         \n",
    "    #Fill the dataframe with top 20 (n_rec_items) item based recommendations\n",
    "    #sort_index = sort_index[0:n_rec_items]\n",
    "    #Fill the dataframe with all items based recommendations\n",
    "    for i in range(0,len(sort_index)):\n",
    "        cur_item_index = sort_index[i][1] \n",
    "        cur_item = list (items_index.keys()) [list (items_index.values()).index (cur_item_index)]\n",
    "            \n",
    "        if ~np.isnan(sort_index[i][0]) and cur_item_index not in cur_user_items:\n",
    "            df.loc[len(df)]=[cur_item, sort_index[i][0]]\n",
    "    \n",
    "    return df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "599 is a new item.\n",
      "\n",
      "711 is a new item.\n",
      "\n",
      "814 is a new item.\n",
      "\n",
      "830 is a new item.\n",
      "\n",
      "852 is a new item.\n",
      "\n",
      "857 is a new item.\n",
      "\n",
      "1156 is a new item.\n",
      "\n",
      "1236 is a new item.\n",
      "\n",
      "1309 is a new item.\n",
      "\n",
      "1310 is a new item.\n",
      "\n",
      "1320 is a new item.\n",
      "\n",
      "1343 is a new item.\n",
      "\n",
      "1348 is a new item.\n",
      "\n",
      "1364 is a new item.\n",
      "\n",
      "1373 is a new item.\n",
      "\n",
      "1457 is a new item.\n",
      "\n",
      "1458 is a new item.\n",
      "\n",
      "1492 is a new item.\n",
      "\n",
      "1493 is a new item.\n",
      "\n",
      "1498 is a new item.\n",
      "\n",
      "1505 is a new item.\n",
      "\n",
      "1520 is a new item.\n",
      "\n",
      "1533 is a new item.\n",
      "\n",
      "1536 is a new item.\n",
      "\n",
      "1543 is a new item.\n",
      "\n",
      "1557 is a new item.\n",
      "\n",
      "1561 is a new item.\n",
      "\n",
      "1562 is a new item.\n",
      "\n",
      "1563 is a new item.\n",
      "\n",
      "1565 is a new item.\n",
      "\n",
      "1582 is a new item.\n",
      "\n",
      "1586 is a new item.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "#统计总的用户\n",
    "unique_users_test = df_triplet_test['user_id'].unique()\n",
    "\n",
    "#为每个用户推荐的item的数目\n",
    "n_rec_items = 20\n",
    "\n",
    "#性能评价参数初始化，用户计算Percison和Recall\n",
    "n_hits = 0\n",
    "n_total_rec_items = 0\n",
    "n_test_items = 0\n",
    "\n",
    "#所有被推荐商品的集合（对不同用户），用于计算覆盖度\n",
    "all_rec_items = set()\n",
    "\n",
    "#残差平方和，用与计算RMSE\n",
    "rss_test = 0.0\n",
    "\n",
    "#对每个测试用户\n",
    "for user in unique_users_test:\n",
    "    #测试集中该用户打过分的电影（用于计算评价指标的真实值）\n",
    "    if user not in users_index:   #user在训练集中没有出现过，新用户不能用协同过滤\n",
    "        print(str(user) + ' is a new user.\\n')\n",
    "        continue\n",
    "   \n",
    "    user_records_test= df_triplet_test[df_triplet_test.user_id == user]\n",
    "    \n",
    "    #对每个测试用户，计算该用户对训练集中未出现过的商品的打分，并基于该打分进行推荐（top n_rec_items）\n",
    "    #返回结果为DataFrame\n",
    "    rec_items = recommend(user)\n",
    "    \n",
    "    for i in range(n_rec_items):\n",
    "        item = rec_items.iloc[i]['item_id']\n",
    "        \n",
    "        if item in user_records_test['item_id'].values:\n",
    "            n_hits += 1\n",
    "        all_rec_items.add(item)\n",
    "    \n",
    "    #计算rmse\n",
    "    for i in range(user_records_test.shape[0]):\n",
    "        item = user_records_test.iloc[i]['item_id']\n",
    "        score = user_records_test.iloc[i]['rating']\n",
    "        \n",
    "        df1 = rec_items[rec_items.item_id == item]\n",
    "        if(df1.shape[0] == 0): #item在训练集中没有出现过，新item不能被协同过滤推荐\n",
    "            print(str(item) + ' is a new item.\\n')\n",
    "            continue\n",
    "        pred_score = df1['score'].values[0]\n",
    "        rss_test += (pred_score - score)**2     #残差平方和\n",
    "    \n",
    "    #推荐的item总数\n",
    "    n_total_rec_items += n_rec_items\n",
    "    \n",
    "    #真实item的总数\n",
    "    n_test_items += user_records_test.shape[0]\n",
    "\n",
    "#Precision & Recall\n",
    "precision = n_hits / (1.0*n_total_rec_items)\n",
    "recall = n_hits / (1.0*n_test_items)\n",
    "\n",
    "#覆盖度：推荐商品占总需要推荐商品的比例\n",
    "coverage = len(all_rec_items) / (1.0* n_items)\n",
    "\n",
    "#打分的均方误差\n",
    "rmse=np.sqrt(rss_test / df_triplet_test.shape[0])  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.001851851851851852"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precision"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.00085"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.17454545454545456"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "coverage"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9658669077094278"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rmse"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以下为基于SVD的协同过滤"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import json  \n",
    "from numpy.random import random"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#以下为初始化模型参数\n",
    "#隐含变量的维数\n",
    "K = 40\n",
    "\n",
    "#item和用户的偏置项\n",
    "bi = np.zeros((n_items,1))    \n",
    "bu = np.zeros((n_users,1))   \n",
    "\n",
    "#item和用户的隐含向量\n",
    "qi =  np.zeros((n_items,K))    \n",
    "pu =  np.zeros((n_users,K))   \n",
    "\n",
    "\n",
    "for uid in range(n_users):  #对每个用户\n",
    "    pu[uid] = np.reshape(random((K,1))/10*(np.sqrt(K)),K)\n",
    "       \n",
    "for iid in range(n_items):  #对每个item\n",
    "    qi[iid] = np.reshape(random((K,1))/10*(np.sqrt(K)),K)\n",
    "\n",
    "#所有用户的平均打分\n",
    "mu = df_triplet['rating'].mean()  #average rating"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#预测用户打分\n",
    "def svd_pred(uid, iid):  \n",
    "    score = mu + bi[iid] + bu[uid] + np.sum(qi[iid]* pu[uid])  \n",
    "        \n",
    "    #将打分范围控制在1-5之间\n",
    "    #if score>5:  \n",
    "        #score = 5  \n",
    "    #elif score<1:  \n",
    "        #score = 1  \n",
    "        \n",
    "    return score  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The 0-th  step is running\n",
      "the rmse of this step on train data is  [1.18396846]\n",
      "The 1-th  step is running\n",
      "the rmse of this step on train data is  [0.92680314]\n",
      "The 2-th  step is running\n",
      "the rmse of this step on train data is  [0.90734616]\n",
      "The 3-th  step is running\n",
      "the rmse of this step on train data is  [0.8961106]\n",
      "The 4-th  step is running\n",
      "the rmse of this step on train data is  [0.8870989]\n",
      "The 5-th  step is running\n",
      "the rmse of this step on train data is  [0.87885583]\n",
      "The 6-th  step is running\n",
      "the rmse of this step on train data is  [0.87122398]\n",
      "The 7-th  step is running\n",
      "the rmse of this step on train data is  [0.86403012]\n",
      "The 8-th  step is running\n",
      "the rmse of this step on train data is  [0.85896564]\n",
      "The 9-th  step is running\n",
      "the rmse of this step on train data is  [0.85376205]\n",
      "The 10-th  step is running\n",
      "the rmse of this step on train data is  [0.84874371]\n",
      "The 11-th  step is running\n",
      "the rmse of this step on train data is  [0.84547469]\n",
      "The 12-th  step is running\n",
      "the rmse of this step on train data is  [0.84203984]\n",
      "The 13-th  step is running\n",
      "the rmse of this step on train data is  [0.83884058]\n",
      "The 14-th  step is running\n",
      "the rmse of this step on train data is  [0.83639053]\n",
      "The 15-th  step is running\n",
      "the rmse of this step on train data is  [0.83427284]\n",
      "The 16-th  step is running\n",
      "the rmse of this step on train data is  [0.83155562]\n",
      "The 17-th  step is running\n",
      "the rmse of this step on train data is  [0.82959829]\n",
      "The 18-th  step is running\n",
      "the rmse of this step on train data is  [0.82797942]\n",
      "The 19-th  step is running\n",
      "the rmse of this step on train data is  [0.82651922]\n",
      "The 20-th  step is running\n",
      "the rmse of this step on train data is  [0.82476251]\n",
      "The 21-th  step is running\n",
      "the rmse of this step on train data is  [0.82344439]\n",
      "The 22-th  step is running\n",
      "the rmse of this step on train data is  [0.82207187]\n",
      "The 23-th  step is running\n",
      "the rmse of this step on train data is  [0.82114206]\n",
      "The 24-th  step is running\n",
      "the rmse of this step on train data is  [0.82003647]\n",
      "The 25-th  step is running\n",
      "the rmse of this step on train data is  [0.81906335]\n",
      "The 26-th  step is running\n",
      "the rmse of this step on train data is  [0.81802673]\n",
      "The 27-th  step is running\n",
      "the rmse of this step on train data is  [0.81746832]\n",
      "The 28-th  step is running\n",
      "the rmse of this step on train data is  [0.81652531]\n",
      "The 29-th  step is running\n",
      "the rmse of this step on train data is  [0.81583458]\n",
      "The 30-th  step is running\n",
      "the rmse of this step on train data is  [0.81537882]\n",
      "The 31-th  step is running\n",
      "the rmse of this step on train data is  [0.81460729]\n",
      "The 32-th  step is running\n",
      "the rmse of this step on train data is  [0.81391068]\n",
      "The 33-th  step is running\n",
      "the rmse of this step on train data is  [0.81346111]\n",
      "The 34-th  step is running\n",
      "the rmse of this step on train data is  [0.8130552]\n",
      "The 35-th  step is running\n",
      "the rmse of this step on train data is  [0.81263605]\n",
      "The 36-th  step is running\n",
      "the rmse of this step on train data is  [0.81209097]\n",
      "The 37-th  step is running\n",
      "the rmse of this step on train data is  [0.81172357]\n",
      "The 38-th  step is running\n",
      "the rmse of this step on train data is  [0.81135443]\n",
      "The 39-th  step is running\n",
      "the rmse of this step on train data is  [0.81110145]\n",
      "The 40-th  step is running\n",
      "the rmse of this step on train data is  [0.81078253]\n",
      "The 41-th  step is running\n",
      "the rmse of this step on train data is  [0.8104977]\n",
      "The 42-th  step is running\n",
      "the rmse of this step on train data is  [0.81021707]\n",
      "The 43-th  step is running\n",
      "the rmse of this step on train data is  [0.80997179]\n",
      "The 44-th  step is running\n",
      "the rmse of this step on train data is  [0.80975348]\n",
      "The 45-th  step is running\n",
      "the rmse of this step on train data is  [0.80949024]\n",
      "The 46-th  step is running\n",
      "the rmse of this step on train data is  [0.80933149]\n",
      "The 47-th  step is running\n",
      "the rmse of this step on train data is  [0.80913855]\n",
      "The 48-th  step is running\n",
      "the rmse of this step on train data is  [0.80893933]\n",
      "The 49-th  step is running\n",
      "the rmse of this step on train data is  [0.80878685]\n"
     ]
    }
   ],
   "source": [
    "#以下为模型训练\n",
    "#gamma：为学习率\n",
    "#Lambda：正则参数\n",
    "#steps：迭代次数\n",
    "\n",
    "steps=50\n",
    "gamma=0.04\n",
    "Lambda=0.15\n",
    "\n",
    "#总的打分记录数目\n",
    "n_records = df_triplet.shape[0]\n",
    "\n",
    "for step in range(steps):  \n",
    "    print ('The ' + str(step) + '-th  step is running' )\n",
    "    rmse_sum=0.0 \n",
    "            \n",
    "    #将训练样本打散顺序\n",
    "    kk = np.random.permutation(n_records)  \n",
    "    for j in range(n_records):  \n",
    "        #每次一个训练样本\n",
    "        line = kk[j]  \n",
    "        \n",
    "        uid = users_index [df_triplet.iloc[line]['user_id']]\n",
    "        iid = items_index [df_triplet.iloc[line]['item_id']]\n",
    "    \n",
    "        rating  = df_triplet.iloc[line]['rating']\n",
    "                \n",
    "        #预测残差\n",
    "        eui = rating - svd_pred(uid, iid)  \n",
    "        #残差平方和\n",
    "        rmse_sum += eui**2  \n",
    "                \n",
    "        #随机梯度下降，更新\n",
    "        bu[uid] += gamma * (eui - Lambda * bu[uid])  \n",
    "        bi[iid] += gamma * (eui - Lambda * bi[iid]) \n",
    "                \n",
    "        temp = qi[iid]  \n",
    "        qi[iid] += gamma * (eui* pu[uid]- Lambda*qi[iid] )  \n",
    "        pu[uid] += gamma * (eui* temp - Lambda*pu[uid])  \n",
    "            \n",
    "    #学习率递减\n",
    "    gamma=gamma*0.93  \n",
    "    print (\"the rmse of this step on train data is \",np.sqrt(rmse_sum/n_records))  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#保存模型参数\n",
    "def save_json(filepath):\n",
    "    dict_ = {}\n",
    "    dict_['mu'] = mu\n",
    "    dict_['K'] = K\n",
    "    \n",
    "    dict_['bi'] = bi.tolist()\n",
    "    dict_['bu'] = bu.tolist()\n",
    "    \n",
    "    dict_['qi'] = qi.tolist()\n",
    "    dict_['pu'] = pu.tolist()\n",
    "\n",
    "    # Creat json and save to file\n",
    "    json_txt = json.dumps(dict_)\n",
    "    with open(filepath, 'w') as file:\n",
    "        file.write(json_txt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def load_json(filepath):\n",
    "    with open(filepath, 'r') as file:\n",
    "        dict_ = json.load(file)\n",
    "\n",
    "        mu = dict_['mu']\n",
    "        K = dict_['K']\n",
    "\n",
    "        bi = np.asarray(dict_['bi'])\n",
    "        bu = np.asarray(dict_['bu'])\n",
    "    \n",
    "        qi = np.asarray(dict_['qi'])\n",
    "        pu = np.asarray(dict_['pu'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "save_json('svd_model.json')\n",
    "load_json('svd_model.json')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#定义计算用户打分\n",
    "#user：用户\n",
    "#返回推荐items及其打分（DataFrame）\n",
    "def svd_CF_recommend(user):\n",
    "    cur_user_id = users_index[user]\n",
    "    \n",
    "    #训练集中该用户打过分的item\n",
    "    cur_user_items = user_items[cur_user_id]\n",
    "\n",
    "    #该用户对所有item的打分\n",
    "    user_items_scores = np.zeros(n_items)\n",
    "\n",
    "    #预测打分\n",
    "    for i in range(n_items):  # all items \n",
    "        if i not in cur_user_items: #训练集中没打过分\n",
    "            user_items_scores[i] = svd_pred(cur_user_id, i)  #预测打分\n",
    "    \n",
    "    #推荐\n",
    "    #Sort the indices of user_item_scores based upon their value，Also maintain the corresponding score\n",
    "    sort_index = sorted(((e,i) for i,e in enumerate(list(user_items_scores))), reverse=True)\n",
    "    \n",
    "    #Create a dataframe from the following\n",
    "    columns = ['item_id', 'score']\n",
    "    df = pd.DataFrame(columns=columns)\n",
    "         \n",
    "    #Fill the dataframe with top 20 (n_rec_items) item based recommendations\n",
    "    #sort_index = sort_index[0:n_rec_items]\n",
    "    #Fill the dataframe with all items based recommendations\n",
    "    for i in range(0,len(sort_index)):\n",
    "        cur_item_index = sort_index[i][1] \n",
    "        cur_item = list (items_index.keys()) [list (items_index.values()).index (cur_item_index)]\n",
    "            \n",
    "        if ~np.isnan(sort_index[i][0]) and cur_item_index not in cur_user_items:\n",
    "            df.loc[len(df)]=[cur_item, sort_index[i][0]]\n",
    "    \n",
    "    return df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "599 is a new item or  user 7 already rated it.\n",
      "\n",
      "711 is a new item or  user 10 already rated it.\n",
      "\n",
      "814 is a new item or  user 13 already rated it.\n",
      "\n",
      "830 is a new item or  user 13 already rated it.\n",
      "\n",
      "852 is a new item or  user 13 already rated it.\n",
      "\n",
      "857 is a new item or  user 13 already rated it.\n",
      "\n",
      "1156 is a new item or  user 76 already rated it.\n",
      "\n",
      "1236 is a new item or  user 100 already rated it.\n",
      "\n",
      "1309 is a new item or  user 167 already rated it.\n",
      "\n",
      "1310 is a new item or  user 167 already rated it.\n",
      "\n",
      "1320 is a new item or  user 181 already rated it.\n",
      "\n",
      "1343 is a new item or  user 181 already rated it.\n",
      "\n",
      "1348 is a new item or  user 181 already rated it.\n",
      "\n",
      "1364 is a new item or  user 181 already rated it.\n",
      "\n",
      "1373 is a new item or  user 181 already rated it.\n",
      "\n",
      "1457 is a new item or  user 234 already rated it.\n",
      "\n",
      "1458 is a new item or  user 234 already rated it.\n",
      "\n",
      "1492 is a new item or  user 279 already rated it.\n",
      "\n",
      "1493 is a new item or  user 279 already rated it.\n",
      "\n",
      "1498 is a new item or  user 279 already rated it.\n",
      "\n",
      "1505 is a new item or  user 291 already rated it.\n",
      "\n",
      "1520 is a new item or  user 314 already rated it.\n",
      "\n",
      "1533 is a new item or  user 381 already rated it.\n",
      "\n",
      "1536 is a new item or  user 385 already rated it.\n",
      "\n",
      "1543 is a new item or  user 399 already rated it.\n",
      "\n",
      "1557 is a new item or  user 405 already rated it.\n",
      "\n",
      "1561 is a new item or  user 405 already rated it.\n",
      "\n",
      "1562 is a new item or  user 405 already rated it.\n",
      "\n",
      "1563 is a new item or  user 405 already rated it.\n",
      "\n",
      "1565 is a new item or  user 405 already rated it.\n",
      "\n",
      "1582 is a new item or  user 405 already rated it.\n",
      "\n",
      "1586 is a new item or  user 405 already rated it.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "#测试并计算评价指标：PR,rmse,coverage\n",
    "#统计总的用户\n",
    "unique_users_test = df_triplet_test['user_id'].unique()\n",
    "\n",
    "#为每个用户推荐的item的数目\n",
    "n_rec_items = 20\n",
    "\n",
    "#性能评价参数初始化，用户计算Percison和Recall\n",
    "n_hits = 0\n",
    "n_total_rec_items = 0\n",
    "n_test_items = 0\n",
    "\n",
    "#所有被推荐商品的集合（对不同用户），用于计算覆盖度\n",
    "all_rec_items = set()\n",
    "\n",
    "#残差平方和，用与计算RMSE\n",
    "rss_test = 0.0\n",
    "\n",
    "#对每个测试用户\n",
    "for user in unique_users_test:\n",
    "    #测试集中该用户打过分的电影（用于计算评价指标的真实值）\n",
    "    if user not in users_index:   #user在训练集中没有出现过，新用户不能用协同过滤\n",
    "        print(str(user) + ' is a new user.\\n')\n",
    "        continue\n",
    "   \n",
    "    user_records_test= df_triplet_test[df_triplet_test.user_id == user]\n",
    "    \n",
    "    #对每个测试用户，计算该用户对训练集中未出现过的商品的打分，并基于该打分进行推荐（top n_rec_items）\n",
    "    #返回结果为DataFrame\n",
    "    rec_items = svd_CF_recommend(user)\n",
    "    for i in range(n_rec_items):\n",
    "        item = rec_items.iloc[i]['item_id']\n",
    "        \n",
    "        if item in user_records_test['item_id'].values:\n",
    "            n_hits += 1\n",
    "        all_rec_items.add(item)\n",
    "    \n",
    "    #计算rmse\n",
    "    for i in range(user_records_test.shape[0]):\n",
    "        item = user_records_test.iloc[i]['item_id']\n",
    "        score = user_records_test.iloc[i]['rating']\n",
    "        \n",
    "        df1 = rec_items[rec_items.item_id == item]\n",
    "        if(df1.shape[0] == 0): #item不在推荐列表中，可能是新item在训练集中没有出现过，或者该用户已经打过分新item不能被协同过滤推荐\n",
    "            print(str(item) + ' is a new item or  user ' + str(user) +' already rated it.\\n')\n",
    "            continue\n",
    "        pred_score = df1['score'].values[0]\n",
    "        rss_test += (pred_score - score)**2     #残差平方和\n",
    "    \n",
    "    #推荐的item总数\n",
    "    n_total_rec_items += n_rec_items\n",
    "    \n",
    "    #真实item的总数\n",
    "    n_test_items += user_records_test.shape[0]\n",
    "\n",
    "#Precision & Recall\n",
    "precision = n_hits / (1.0*n_total_rec_items)\n",
    "recall = n_hits / (1.0*n_test_items)\n",
    "\n",
    "#覆盖度：推荐商品占总需要推荐商品的比例\n",
    "coverage = len(all_rec_items) / (1.0* n_items)\n",
    "\n",
    "#打分的均方误差\n",
    "rmse=np.sqrt(rss_test / df_triplet_test.shape[0])  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.07788671023965142"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precision"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.03575"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.15151515151515152"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "coverage"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9247862080496531"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rmse"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "经过比较得知，SVD_CF的precision最高，User_CF的precision最低；SVD_CF的recall最高，User_CF的recall最低；Item_CF的coverage最高，SVD_CF的coverage最低；Item_CF的rmse最高，SVD_CF的rmse最低；\n",
    "与推荐数10相比，除了User_CF值大致不变，其余值均有不同幅度的上涨"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
